Regex для сопоставления чего-либо, если ему не предшествует что-то другое

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

String s = "foobar barbar beachbar crowbar bar ";

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

barbar
beachbar
crowbar
bar

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

Ответ 1

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

\w*(?<!foo)bar

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

Подробнее см. Регулярные выражения - Lookaround.

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