正则表达式负面观察最大“长度”

时间:2014-12-27 02:38:23

标签: regex

它确实有效。

我正在尝试使用正则表达式匹配字符串,其中一个字符由单引号'包围,其中两个引号前面都不能有反斜杠\

这是我的正则表达式:

(?<!\\)'(.{1})(?<!\\)'

它使用负向lookbehind来确保引号前面没有反斜杠。

到目前为止,它运作良好,但我遇到了一个问题:

来自'H'ello world!它与'H'匹配,而\'H'ello world则与'H'不匹配,因为'H'前面有\

我遇到的问题是,如果我有这个字符串:

'I' have \'r'eally bad 'e'xamples

它将与'I'匹配,因为它不在\之前,它与\'r'不匹配,因为它前面有\,但赢了't 匹配'e',因为\之前不是直接,但在此之前会出现\({{1}之前})。

所以我的问题是,有没有办法指定负面的后视应该寻找'r'的“最大距离”?

提前致谢!

1 个答案:

答案 0 :(得分:1)

首先,你背后的外观不是可变长度;它的长度恰好为1,因为它只有一个字符。

其次,你只需要背后的一个;如果点与反斜杠不匹配则不需要第二个。

您的正则表达式可以简化为:

(?<!\\)'[^\\]'
相关问题