什么是正则表达式匹配任何东西,除了双引号之前没有反斜杠?

时间:2009-08-29 18:57:25

标签: regex

换句话说,我有一个像:

这样的字符串

“任何东西,逃脱双引号:\”,是的,“这里的任何东西都不配。

如何匹配引号内的所有内容?

我在想

^"((?<!\\)[^"]+)"

但我的脑袋旋转,那应该是正面还是负面的背后?或者它是否有效?

如何匹配除双引号之外的任何字符,前面没有反斜杠?

2 个答案:

答案 0 :(得分:32)

没有必要的背后隐藏:

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

所以:匹配引号,并在其中:除了引号([^"]之外的每个字符都是一个转义引号(\\"),任意多次({{1 }})。

答案 1 :(得分:3)

“不在前面”会直接转换为“负面反馈”,因此您需要(?<!\\)"

虽然这是一个可能毁了你一天的问题:字符串"foo\\"怎么样?也就是说,双引号前面有两个反斜杠,在大多数转义语法中,我们希望通过在第一个反斜杠前面加上第二个反斜杠的特殊含义来否定它。

这就是为什么正则表达式不能替代解析器的原因。