Регулярное выражение "^ [a-zA-Z]" или "[^ a-zA-Z]" - PullRequest
20 голосов
/ 07 мая 2010

Есть ли разница между ^[a-zA-Z] и [^a-zA-Z]?

Когда я проверяю в C #,

Regex.IsMatch("t", "^[a-zA-Z]")  // Returns true (I think it's correct)

Regex.IsMatch("t", "[^a-zA-Z]")  // Returns false

На многих сайтах используется [^a-zA-Z] для алфавита.Я не совсем уверен, какой из них правильный ответ.

Ответы [ 4 ]

61 голосов
/ 07 мая 2010

Да, первое означает «соответствовать всем строкам, которые начинаются с буквы», второе означает «соответствовать всем строкам, которые содержат не буквы». Символ каретки («^») используется двумя различными способами: один для обозначения начала текста, другой для отмены совпадения символов в квадратных скобках.

12 голосов
/ 07 мая 2010

^[a-zA-Z] означает любой a-z или A-Z в начале строки

[^a-zA-Z] означает любой символ, который НЕ является a-z ИЛИ A-Z

6 голосов
/ 07 мая 2010

Есть разница.

Когда символ ^ появляется за пределами [], он соответствует началу строки (или строки). Когда символ ^ появляется внутри [], он соответствует любому символу, отсутствующему внутри [].

3 голосов
/ 07 мая 2010

^ вне класса символов («[a-zA-Z]») отмечает, что это оператор «начинается с».
^ внутри символа отрицает указанный класс.

Таким образом, «^ [a-zA-Z]» переводится как «начинается с символа из az или AZ», а «[^ a-zA-Z]» переводится в «не является ни az, ни AZ» *

Вот краткий справочник: http://www.regular -expressions.info / reference.html

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