Вопрос

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

Если бы я использовал grep (которого я не имею), я бы хотел опцию -v.

Более конкретный пример: я хочу, чтобы моя regexp соответствовала строке IFF foo является нет в строке. Так что это будет соответствовать bar будет, но нет foobar.

Это было полезно?

Решение

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

^((?!foo).)*$

Это регулярное выражение будет соответствовать только строкам, которые не содержат Foo. Первый Lookahead отрицает струны, начиная с «Foo», а второй убедится, что Foo не найден в другом месте в струне.

Другие советы

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

^(.(?!test))*$

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

Я уже ответил на этот вопрос для кого -то, посмотрите эти ссылки:

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

(?! Foo).*

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

Вы также можете сделать это (в Python), используя re.split, и расщепление на основе вашего регулярного выражения, тем самым возвращая все части, которые не соответствуют регуляции, Разделение на основе того, что не соответствует регуляре

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top