В настоящее время у меня есть регулярное выражение для соответствия, где строка содержит 'bar', но перед ней не стоит 'foo':
(?<!foo)bar
Я хочу изменить регулярное выражение так, чтобы оно совпадало там, где строка содержит 'bar', но перед ней не стоит 'foo' и (необязательно) любые дополнительные символы.
НАПРИМЕР. «footestbar» не должен совпадать, так как перед «bar» следует «foo», за которым следует «test».
Я не могу найти способ достичь этого, так как регулярные выражения не позволяют использовать квантификатор в негативном взгляде. Впоследствии я не могу сделать следующее:
(?<!foo.*)bar
Есть ли альтернативный подход?
ОБНОВЛЕНИЕ:
аромат регулярного выражения re2 . В настоящее время я рассматриваю документацию, но на первый взгляд заметил следующее:
(?<!re) after text not matching re (NOT SUPPORTED)
Поэтому решение не может использовать отрицательный взгляд назад (если я правильно интерпретирую документацию).
(?<!re) after text not matching re (NOT SUPPORTED)