Необязательные персонажи в Lookaround

Скажем, я хочу найти каждую итерацию orange этому не предшествует apple and используя RegEx. Я также хочу, чтобы это работало на соответствующие множественные числа.

Вот список того, что должно и не должно быть действительным.

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 описывает ошибку следующим образом.

Вид сзади должен быть нулевой ширины, поэтому квантификаторы не допускаются.

Почему это? Как я могу решить эту проблему?

1 ответ

Решение

Смотровые площадки должны иметь фиксированную длину. Указывая необязательный символ, вы указываете, что длина может меняться на единицу. Это не принято. Но вы не ограничены количеством просмотров, которые вы выполняете, поэтому вы можете разделить его на две части, например:

(?<!apple and )(?<!apples and )oranges?
Другие вопросы по тегам