Регулярное выражение "^ [a-zA-Z]" или "[^ a-zA-Z]"
Есть ли разница между ^[a-zA-Z]
и [^a-zA-Z]
?
Когда я проверяю С#,
Regex.IsMatch("t", "^[a-zA-Z]") // Returns true (I think it correct)
Regex.IsMatch("t", "[^a-zA-Z]") // Returns false
Существует множество веб-сайтов, использующих [^a-zA-Z]
для алфавита. Я не уверен, какой из них правильный ответ.
Ответы
Ответ 1
Да, первое означает "сопоставить все строки, начинающиеся с буквы", второе означает "соответствовать всем строкам, которые содержат небукту". Каретка ( "^" ) используется двумя разными способами: одна для сигнализации начала текста, одна для отмены совпадения символов внутри квадратных скобок.
Ответ 2
^[a-zA-Z]
означает любой a-z или A-Z в начале строки
[^a-zA-Z]
означает любой символ, который НЕ является a-z ИЛИ A-Z
Ответ 3
Есть разница.
Когда символ ^
появляется за пределами []
, совпадает с началом строки (или строки). Когда символ ^
появляется внутри []
, он соответствует любому символу, который не отображается внутри []
.
Ответ 4
^ вне класса символов ( "[a-zA-Z]" ) отмечает, что это оператор "начинается с".
^ внутри символа отрицает указанный класс.
Итак, "^ [a-zA-Z]" переводится в "начинается с символа из az или AZ", а "[^ a-zA-Z]" переводится в "не является либо az, либо AZ"
Вот краткая ссылка: http://www.regular-expressions.info/reference.html