Подтвердить что ты не робот

Инвертировать совпадение с регулярным выражением

С помощью PCRE вы можете создать выражение, которое будет соответствовать только если строка не найдена.

Если бы я использовал grep (чего я не знаю), мне нужна опция -v.

Более конкретный пример: я хочу, чтобы мое регулярное выражение соответствовало строке iff string foo в строке. Таким образом, он будет соответствовать bar, но не foobar.

4b9b3361

Ответ 1

Хорошо, я уточнил свое регулярное выражение на основе решения, которое вы придумали (которое ошибочно соответствует строкам, которые начинаются с "теста" ).

^((?!foo).)*$

Это регулярное выражение будет соответствовать только строкам, которые не содержат foo. Первый lookahead будет отклонять строки, начинающиеся с 'foo', а второй будет гарантировать, что foo не найден нигде в строке.

Ответ 2

Основываясь на ответе Даниэля, я думаю, что у меня есть что-то, что работает:

^(.(?!test))*$

Ключ в том, что вам нужно сделать отрицательное утверждение для каждого символа в строке

Ответ 4

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

(?! Foo). *

Ответ 5

Создайте выражение, которое соответствует, и используйте! match()... (логическое отрицание) Вероятно, как это делает grep...