假设我希望使用RegEx找到orange
的{{1}}的每次迭代,其中<{1}}前面有apple and
。我也希望这适用于各自的复数。
以下是应该和不应该有效的列表。
orange - valid
oranges - valid
an orange - valid
apple and orange - invalid
apple and oranges - invalid
apples and orange - invalid
apples and oranges - invalid
到目前为止,为了实现这一目标,我编写的代码如下:
(?<!apples? and )oranges?
当我测试它时,我收到错误,在s
之后追溯到可选的apple
字符。 Regex101将错误描述如下。
Lookbehinds需要为零宽度,因此不允许使用量词。
这是为什么?我该如何解决这个问题?
答案 0 :(得分:3)
后视必须有固定的长度。通过指定可选字符,您可以指示长度可以变化一个。这是不被接受的。但是,你不受你所执行的后视数量的限制,所以你可以将它分成两部分,如下所示:
(?<!apple and )(?<!apples and )oranges?