换句话说,我有一个字符串,如:
“任何东西,逃脱双引号:\”,是的,“这里的任何东西都不配 .
如何匹配引号内的所有内容?
我在想
^"((?<!\\)[^"]+)"
但我的头脑旋转,应该是积极的还是消极的看法?还是它的功能呢?
如何匹配任何字符,除了双引号之外没有反斜杠?
没有必要的后背:
"([^"]|\\")*"
所以:匹配报价,并在其中:除引号( [^"] ) or 之外的每个字符都是一个转义报价( \\" ),任意多次( * ) .
[^"]
\\"
*
"Not preceded by"直接转换为"negative lookbehind",所以你想要 (?<!\\)" .
(?<!\\)"
虽然这是一个可能毁了你一天的问题:字符串 "foo\\" 怎么样?也就是说,双引号前面有两个反斜杠,在大多数转义语法中,我们希望通过在第一个反斜杠前面加上第二个反斜杠的特殊含义来否定它 .
"foo\\"
这就是为什么正则表达式不能替代解析器的原因 .
2 回答
没有必要的后背:
所以:匹配报价,并在其中:除引号(
[^"]
) or 之外的每个字符都是一个转义报价(\\"
),任意多次(*
) ."Not preceded by"直接转换为"negative lookbehind",所以你想要
(?<!\\)"
.虽然这是一个可能毁了你一天的问题:字符串
"foo\\"
怎么样?也就是说,双引号前面有两个反斜杠,在大多数转义语法中,我们希望通过在第一个反斜杠前面加上第二个反斜杠的特殊含义来否定它 .这就是为什么正则表达式不能替代解析器的原因 .