2009-10-21 9 views
20

¿Qué significa el guión bajo en la siguiente expresión regular?¿Qué significa _ en [a-zA-Z0-9_]?

[a-zA-Z0-9_]

El _ parece hacer ninguna diferencia, así que no entiendo el propósito de la misma.

+10

BTW, '[a-zA-Z0-9_]' == 'w ' – Tordek

+7

Consulte [perlre] (http://perldoc.perl.org/perlre.html) y [perlref] (http: //perldoc.perl.org/perlreref.html). Sí, acabo de decir "RTFM". –

+4

Tordek: no [a-zA-Z0-9_]! = \ W, no en Perl. –

Respuesta

44

Significa hacer coincidir el carácter de subrayado además de letras minúsculas, letras mayúsculas y números.

15

Significa que el guión bajo también se corresponde.

65

El guión bajo significa un guión bajo.

+3

Probar como una fuerza, I no pudo encontrar un solo problema con su declaración; es una total simplicidad y la lógica es irreprochable :-) +1 – paxdiablo

+12

Y nunca antes se tocó tan fácilmente la tapa de rep .. – Ether

9

Con la excepción de las secuencias de caracteres ([., [:, y [=), las expresiones de rango (por ejemplo, [a-z]), y la circunfleja en el principio ([^), cada carácter dentro de una expresión entre corchetes significa que el personaje en sí, solo como ese guion bajo.

Como nota al margen, esa expresión se representa comúnmente por \w (carácter de palabra, ignorando el Unicode y la configuración regional), y se usa comúnmente para definir el conjunto de caracteres que se permite usar en nombres de variables.

+3

\ w depende de la configuración regional y también coincidirá con los caracteres Unicode –

+0

Para la mayoría de los idiomas, '[a-zA- Z _] [a-zA-Z0-9 _] * 'es probablemente más preciso para los nombres de las variables, ya que prohíben comenzar con los dígitos. –

+0

Y muchos idiomas hoy en día permiten otros scripts para nombres de variables también. Así que diviértete con las clases Unicode también :-) – Joey

11

Las expresiones regulares están documentadas en perlre. Ese es el lugar para verificar cada vez que tenga una pregunta sobre expresiones regulares. El sitio Regular-Expressions.info es muy útil también.

Para empezar, lo que está viendo se llama "clase de caracteres".

+1

+1 para responder * más * a la pregunta inmediata. – paxdiablo

+0

Gracias. Solo si todos fuéramos tan tolerantes con los novatos. – unj2

+0

Para alguien nuevo en expresiones regulares en Perl, siempre recomiendo 'perldoc perlrequick' primero. Es mucho más amigable que 'perldoc perlre', principalmente porque no es tan abrumadoramente detallado. – Telemachus