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


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

String s = "foobar barbar beachbar crowbar bar ";

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

barbar
beachbar
crowbar
bar

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

1 85

1 ответ:

вы хотите использовать negative lookbehind такой:

\w*(?<!foo)bar

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

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

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