[a-zA-Z0-9_]中的_是什么意思?

时间:2009-10-21 22:57:27

标签: regex perl

以下正则表达式中的下划线是什么意思?

[a-zA-Z0-9_]

_似乎没有任何区别,所以我不理解它的目的。

5 个答案:

答案 0 :(得分:69)

下划线表示下划线。

答案 1 :(得分:48)

除小写字母,大写字母和数字外,还表示匹配下划线字符。

答案 2 :(得分:15)

这意味着下划线也匹配。

答案 3 :(得分:15)

perlre中记录了正则表达式。只要您对正则表达式有疑问,就可以查看这个地方。 Regular-Expressions.info网站也非常有用。

为了让你开始,你所看到的东西被称为“角色类”。字符类中的任何字符都可以匹配。

您可以使用-制作一系列字符,因此a-z是该范围内的任何小写字母。 A-Z是大写字母,0-9是数字。 _是字面下划线。这些是Perl标识符(变量名称等)的合法字符。这是ASCII意义上的\w字符类(而不是扩展的Unicode意义)。

人们经常使用它来匹配Perl变量名,但是人们会忘记这个规则。用户定义名称的第一个字符必须是字母或下划线(不是数字)。这意味着您应该为首字母使用不同的字符类:

 [A-Za-z_][A-Za-z0-9_]*

答案 4 :(得分:9)

除了字符序列([.[:[=),范围表达式(例如[a-z])和开头的回旋符号({ {1}}),括号表达式中的每个字符表示字符本身,就像下划线一样。

作为旁注,该表达式通常由[^(单词字符,忽略unicode和locale)表示,通常用于定义允许在变量名中使用的字符集。 / p>