我正在尝试编写一个匹配单引号的正则表达式,可以对其进行转义。匹配的引号应该在它之前有一个偶数个反斜杠(奇数表示报价被转义)。例如,在这五个字符串中:
'quotes should be matched'
\'quotes should NOT be matched\'
\\'quotes should be matched\\'
\\\'quotes should NOT be matched\\\'
\\\\'quotes should be matched\\\\'
这是我的正则表达式:
(?<=[^\\](?:\\\\)*)'
但是,这与上例中的任何内容都不匹配。我发现这很奇怪,因为从正则表达式中删除*
会匹配带有两个反斜杠的引号,因为它应该:
(?<=[^\\](?:\\\\))'
匹配\\'
答案 0 :(得分:3)
据我所知,仅仅匹配'
是不可能的。这是因为你不能像Wiseguy指出的那样拥有动态长度的外观。
以下正则表达式会匹配正确的'
和任何导致它的\
。不确定这是否有用..
(?<!\\)(?:\\\\)*'
匹配任意数量的双\
,前面没有\
,后跟'
。