регулярное выражение, совпадающее со строкой, в которой строка DOESNT ведет с именем пользователя - PullRequest
1 голос
/ 16 августа 2010

Поэтому я пытаюсь написать регулярное выражение и заставить его соответствовать ТОЛЬКО строке, если строка не начинается со строки 'username'

Я пробовал что-то вроде ^ ([^ username])... но это соответствует строкам, где строка не начинается ни с одной из этих букв.

Любая помощь приветствуется!

Ответы [ 3 ]

6 голосов
/ 16 августа 2010
^(?!username)

с использованием негативного взгляда .

Другой вариант, в зависимости от того, что вы делаете, - просто инвертировать вашу логику. Например, если вы делали

if foo matches <regex>

тогда просто сделай

if !(foo matches <regex>)
2 голосов
/ 16 августа 2010

Если вы используете Perl: вы можете использовать оператор отрицательного связывания:

if($text !~ /^username/) {
    # do something
}
1 голос
/ 16 августа 2010

но это соответствует строкам где Строка не начинается с любого из этих буквы.

Это потому, что квадратные скобки ([]) обозначают класс символов , а курсор (^) отрицает класс символов.

Как говорится, почему у вас есть для использования регулярных выражений? Это можно сделать с помощью простого сопоставления строк, которое обычно быстрее, чем регулярное выражение. Если есть совпадение, проверьте и посмотрите, не является ли позиция началом строки. Вы не указали язык, но большинство из них поддерживают это.

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