【发布时间】:2013-03-04 21:54:12
【问题描述】:
我正在尝试编写一个正则表达式来匹配单引号,这可能会被转义。匹配的引号前面应该有偶数个反斜杠(奇数表示引号被转义)。例如,在这五个字符串中:
'quotes should be matched'
\'quotes should NOT be matched\'
\\'quotes should be matched\\'
\\\'quotes should NOT be matched\\\'
\\\\'quotes should be matched\\\\'
这是我拥有的正则表达式:
(?<=[^\\](?:\\\\)*)'
但是,这与上述示例中的任何内容都不匹配。我觉得这很奇怪,因为从正则表达式中删除 * 与带有两个反斜杠的引号匹配,因为它应该:
(?<=[^\\](?:\\\\))' 匹配 \\'
【问题讨论】:
-
Regex 通常不是这样匹配的最佳工具
-
在我的情况下我真的别无选择。只是出于好奇,我的替代方案是什么?
-
您使用哪种编程语言?
-
当您添加
*时它不起作用,因为该部分在您的后视中,并且大多数正则表达式引擎不支持可变长度后视(即,不能包含像 @987654327 这样的量词@、*、+、{n,m})。 -
@Joel 这取决于很多因素;就像如果这是一个 CSV 文件,可能已经有一个 CSV 解析器内置到您使用的任何语言中。如果它是一个独特的数据集,您可能必须创建自己的解析器。