我正在尝试解析 apache 日志,并且在引用者的正确语法方面遇到问题,因为它是内部的字符串"
(双引号),也可以\"
在其中。
"([^"]*)"
\"
当字符串中 有 a 时不起作用。
如何从第一个双引号开始,然后取所有不是双引号的字符,除非它是\"
,在这种情况下我包括它,然后继续?
我正在尝试解析 apache 日志,并且在引用者的正确语法方面遇到问题,因为它是内部的字符串"
(双引号),也可以\"
在其中。
"([^"]*)"
\"
当字符串中 有 a 时不起作用。
如何从第一个双引号开始,然后取所有不是双引号的字符,除非它是\"
,在这种情况下我包括它,然后继续?
你可以使用这个:
"((?:[^"]|\\")*)"
它将匹配零个或多个除双引号或斜杠-双引号对以外的任何字符,所有字符都用双引号括起来。
例如,字符串中是否还有其他转义"hello \\"
?在这种情况下,您需要一种更通用的方法:
"((?:\\.|[^"\\])*)"
这个怎么样?\
在结束前排除 a 的负面回顾"
"(.+?)(?<!\\)"
这将匹配两个引号,中间有任意数量的转义引号:
"\([^"]\|\\"\)*"
首先,它寻找报价。接下来,它搜索以下零到无穷大: