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

Cor*_*Xii 17 regex

换句话说,我有一个字符串:

"任何东西,逃脱双引号:\",是的,"这里的任何东西都不能匹配.

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

我在想

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

但我的头脑旋转,应该是积极的还是消极的看法?或者它是否有效?

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

Kon*_*lph 35

没有必要的后背:

"([^"]|\\")*"
Run Code Online (Sandbox Code Playgroud)

所以:匹配引号,并在其中:除了quote([^"])转义引号(\\")之外的每个字符,任意多次(*).

  • 正如提到的混乱,你可能也想分别处理双反斜杠(尽管OP没有指定). (4认同)
  • 在ruby上它只能按相反的顺序工作:````(\\"| [^"])*"``` (4认同)

cha*_*aos 5

“前面不包含”直接翻译为“负向后查找”,所以你想要(?<!\\)".

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

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