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