Инвертировать совпадение с регулярным выражением
С помощью PCRE вы можете создать выражение, которое будет соответствовать только если строка не найдена.
Если бы я использовал grep (чего я не знаю), мне нужна опция -v.
Более конкретный пример: я хочу, чтобы мое регулярное выражение соответствовало строке iff string foo
в строке. Таким образом, он будет соответствовать bar
, но не foobar
.
Ответы
Ответ 1
Хорошо, я уточнил свое регулярное выражение на основе решения, которое вы придумали (которое ошибочно соответствует строкам, которые начинаются с "теста" ).
^((?!foo).)*$
Это регулярное выражение будет соответствовать только строкам, которые не содержат foo. Первый lookahead будет отклонять строки, начинающиеся с 'foo', а второй будет гарантировать, что foo не найден нигде в строке.
Ответ 2
Основываясь на ответе Даниэля, я думаю, что у меня есть что-то, что работает:
^(.(?!test))*$
Ключ в том, что вам нужно сделать отрицательное утверждение для каждого символа в строке
Ответ 3
Я уже ответил на этот вопрос для кого-то, посмотри эти ссылки:
Ответ 4
Это действительно почти дубликат. Я думаю, что регулярное выражение, которое вы ищете,
(?! Foo). *
Ответ 5
Создайте выражение, которое соответствует, и используйте! match()... (логическое отрицание)
Вероятно, как это делает grep...
Ответ 6
Вы также можете сделать это (в python) с помощью re.split
и расщепления на основе вашего регулярного выражения, возвращая тем самым все части, которые не соответствуют регулярному выражению расщепление на основе того, что не соответствует regularexpression