我正在使用环视(lookbehind和lookahead)功能学习正则表达式,但我不能在lookbehind中使用.*
或.+
量词(但我可以预见)。
我试图解决的正则表达式如下:
(?<!yellow.*)blue(?=.*brown)
我们的想法是匹配不具有yellow
的行,但只有在{蓝色之后{}存在blue
时才会brown
。以下是一些示例:
yellow blue brown // shouldn't match
f blue brown // should match
sdff blue brown // should match
asdf f blue c // shouldn't match
yellow blue fblue b f brown // shouldn't match
这是我的测试:
http://regex101.com/r/fY4kI9/5
我得到的错误是:
。 * Lookbehinds需要为零宽度,因此量词不是 允许
你知道如何解决这个问题吗?
答案 0 :(得分:3)
您可以使用此正则表达式而不使用可变长度的lookbehind但仍然可以获得相同的功能:
.*yellow.*(*SKIP)(*F)|^.*\bblue\b(?=.*brown).*$