регулярное выражение для сопоставления чего-либо, если ему не предшествует что-то еще - PullRequest
116 голосов
/ 16 февраля 2012

Итак, с помощью регулярного выражения в Java, я хочу написать регулярное выражение, которое будет соответствовать, если и только если шаблону не предшествуют определенные символы.Например:

String s = "foobar barbar beachbar crowbar bar ";

Я хочу соответствовать, если перед баром не стоит foo.Таким образом, результат будет:

barbar
beachbar
crowbar
bar

Я знаю, что это, вероятно, очень простой вопрос.Я пытаюсь выучить регулярные выражения, но сейчас мне нужно кое-что поработать.

1 Ответ

199 голосов
/ 16 февраля 2012

Вы хотите использовать negative lookbehind следующим образом:

\w*(?<!foo)bar

Где (?<!x) означает «только если у него нет« x »до этой точки».

См. Регулярные выражения - Lookaround для получения дополнительной информации.

Редактировать : добавлен \w* для захвата символов до (например, "пляж").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...