它确实有效。
我正在尝试使用正则表达式匹配字符串,其中一个字符由单引号'
包围,其中两个引号前面都不能有反斜杠\
。
这是我的正则表达式:
(?<!\\)'(.{1})(?<!\\)'
它使用负向lookbehind来确保引号前面没有反斜杠。
到目前为止,它运作良好,但我遇到了一个问题:
来自'H'ello world!
它与'H'
匹配,而\'H'ello world
则与'H'
不匹配,因为'H'
前面有\
。
我遇到的问题是,如果我有这个字符串:
'I' have \'r'eally bad 'e'xamples
它将与'I'
匹配,因为它不在\
之前,它与\'r'
不匹配,因为它前面有\
,但赢了't 匹配'e'
,因为\
之前不是直接,但在此之前会出现\
({{1}之前})。
所以我的问题是,有没有办法指定负面的后视应该寻找'r'
的“最大距离”?
提前致谢!
答案 0 :(得分:1)
首先,你背后的外观不是可变长度;它的长度恰好为1,因为它只有一个字符。
其次,你只需要背后的一个;如果点与反斜杠不匹配则不需要第二个。
您的正则表达式可以简化为:
(?<!\\)'[^\\]'