3

我正在尝试解析 apache 日志,并且在引用者的正确语法方面遇到问题,因为它是内部的字符串"(双引号),也可以\"在其中。

"([^"]*)"\"当字符串中 有 a 时不起作用。

如何从第一个双引号开始,然后取所有不是双引号的字符,除非它是\",在这种情况下我包括它,然后继续?

4

4 回答 4

3

你可以使用这个:

"((?:[^"]|\\")*)"

它将匹配零个或多个除双引号或斜杠-双引号对以外的任何字符,所有字符都用双引号括起来。

于 2013-07-19T20:33:50.890 回答
1

例如,字符串中是否还有其他转义"hello \\"?在这种情况下,您需要一种更通用的方法:

"((?:\\.|[^"\\])*)"
于 2013-07-19T20:38:03.657 回答
1

这个怎么样?\在结束前排除 a 的负面回顾"

"(.+?)(?<!\\)"
于 2013-07-19T20:55:25.610 回答
0

这将匹配两个引号,中间有任意数量的转义引号:

"\([^"]\|\\"\)*"

首先,它寻找报价。接下来,它搜索以下零到无穷大:

  • 非引号字符
  • 以反斜杠开头的引号字符
于 2013-07-19T20:37:17.773 回答