Регулярное выражение не соответствует "www" - PullRequest
5 голосов
/ 17 февраля 2010

Полагаю, у меня действительно слабая логика.

Мне нужно написать регулярное выражение, которое соответствует всему, кроме www. Он должен соответствовать wwwd, abcd и всем остальным, просто , а не www. (О Боже, пожалуйста, это не должно быть очень легко).

Я использую реализацию регулярных выражений на языке Ruby.

ОБНОВЛЕНИЕ: мне нужно использовать регулярное выражение, а не просто text != 'www', потому что так устроен API. Он ожидает шаблон в качестве аргумента, а не результат .

Ответы [ 4 ]

10 голосов
/ 17 февраля 2010

Почему регулярное выражение? Разве text != "www" недостаточно?

Здесь, тем не менее (используется упреждающий просмотр ): ^(?!www$).*

4 голосов
/ 17 февраля 2010

Это простое ванильное регулярное выражение. На некоторых диалектах вы можете делать более странные вещи с негативными утверждениями.

^(.|..|[^w]..|.[^w].|..[^w]|.....*)$

На английском языке:

Вам нужно что-то, что ровно один символ, ровно два символа, ровно три символа, где хотя бы один из этих 3 не является символом w, или длиной более 3 символов.

1 голос
/ 17 февраля 2010

Та же общая идея, что и у Лоуренса Гонсалвеса (*), но мне кажется, можно сказать ^.$|^..$|^....+$|.*[^w].* То есть 1, 2 или более 3 символов между началом и концом или любое число, содержащее не w.

(*) Я действительно хотел, чтобы это было комментарием к его ответу, но случайно опубликовал его как мой собственный ответ. Я думаю, я просто оставлю это здесь.

0 голосов
/ 17 февраля 2010

Просто еще один подход

^.{0,2}([^w].*|.{4,})?$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...