regex: найти часть, в которой нет ни одного слова - PullRequest
2 голосов
/ 24 апреля 2010

как я могу оценить предложение, если оно не содержит ни одного из {word1, word2, word3} где я должен поставить ^ символ? я думаю, это должно выглядеть так

^([^word1|word2|word3])$

но это не работает. не могли бы вы помочь? спасибо

Ответы [ 2 ]

4 голосов
/ 24 апреля 2010

Regex - не лучший инструмент для тестирования подобных условий, но если вам нужно, вы можете сделать это с отрицательными взглядами :

^(?!.*word1)(?!.*word2)(?!.*word3).*$

То, что вы пытаетесь сделать, не сработает, потому что [^...] - это класс отрицательных символов с неупорядоченным списком символов. То, что вы написали, эквивалентно:

^([^123dorw|])$

Обратите внимание, что в зависимости от ваших потребностей вы также можете включить границы слов в свое регулярное выражение:

^(?!.*\bword1\b)(?!.*\bword2\b)(?!.*\bword3\b).*$
0 голосов
/ 24 апреля 2010

Я не знаком с использованием регулярных выражений в htaccess, поэтому мои мысли могут быть немного высокого уровня:

то, что вы пытаетесь, выглядит примерно так: если предложение содержит не word1 | не word2 | не word3 тогда сделай что-нибудь

я бы предложил решение так: если предложение содержит word1 | word2 | word3 тогда ничего не делай иначе сделать что-то

означает, что не использовать отрицание в «запросе», но в результате, что упрощает регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...