Что означает _ в [a-zA-Z0-9_]? - PullRequest
       28

Что означает _ в [a-zA-Z0-9_]?

23 голосов
/ 22 октября 2009

Что означает подчеркивание в следующем регулярном выражении?

[a-zA-Z0-9_]

Кажется, что _ не имеет значения, поэтому я не понимаю его цели.

Ответы [ 5 ]

70 голосов
/ 22 октября 2009

Подчеркивание означает подчеркивание.

48 голосов
/ 22 октября 2009

Это означает соответствие символа подчеркивания в дополнение к строчным буквам, заглавным буквам и цифрам.

15 голосов
/ 22 октября 2009

Регулярные выражения задокументированы в perlre . Это место, чтобы проверить, когда у вас есть вопрос о регулярных выражениях. Сайт Regular-Expressions.info также очень полезен.

Чтобы начать, вещь, на которую вы смотрите, называется "классом персонажей". Любой из символов в классе символов может совпадать.

Вы можете сделать диапазон символов с помощью -, поэтому a-z - это любая строчная буква в этом диапазоне. A-Z - заглавные буквы, а 0-9 - цифры. _ - это буквальное подчеркивание. Взятые вместе, это допустимые символы для идентификатора Perl (имена переменных и т. Д.). Это \w класс символов в смысле ASCII (а не расширенный смысл Unicode).

Люди часто используют это для сопоставления имени переменной Perl, но есть правило, которое люди забывают. Первый символ пользовательского имени должен быть буквой или подчеркиванием (не цифрой). Это означает, что вы должны использовать другой класс символов для начальной буквы:

 [A-Za-z_][A-Za-z0-9_]*
15 голосов
/ 22 октября 2009

Это означает, что подчеркивание также совпадает.

9 голосов
/ 22 октября 2009

За исключением последовательностей символов ([., [: и [=), выражений диапазона (например, [a-z]) и окружности в начале ([^), каждые Символ внутри выражения в скобках означает сам символ, как подчеркивание.

В качестве примечания, это выражение обычно представляется как \w (символ слова, игнорируя юникод и локаль) и обычно используется для определения набора символов, которые разрешено использовать в именах переменных.

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