regular - regex one
¿Qué significa el_en[a-zA-Z0-9_]? (5)
¿Qué significa el guión bajo en la siguiente expresión regular?
[a-zA-Z0-9_]
El _
parece no hacer ninguna diferencia por lo que no entiendo el propósito de la misma.
Con la excepción de las secuencias de caracteres ( [.
, [:
, Y [=
), las expresiones de rango (por ejemplo, [az]
), y el circunflejo al principio ( [^
), cada carácter dentro de una expresión de corchete significa el propio carácter, Al igual que subrayar.
Como nota al margen, esa expresión se representa comúnmente mediante /w
(carácter de palabra, ignorando unicode y configuración regional), y se usa comúnmente para definir el conjunto de caracteres que pueden usarse en nombres de variables.
El subrayado significa un subrayado.
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.
Para comenzar, lo que estás mirando se llama "clase de personaje". Cualquiera de los personajes dentro de una clase de personaje puede coincidir.
Puede hacer un rango de caracteres con la -
, por lo que az
es cualquiera de las letras minúsculas en ese rango. AZ
son las letras mayúsculas y 0-9
son los dígitos. El _
es un subrayado literal. En conjunto, esos son los caracteres legales de un identificador de Perl (nombres de variables, etc.). Esa es la clase de caracteres /w
en el sentido ASCII (y no el sentido expandido de Unicode).
La gente a menudo lo usa para hacer coincidir un nombre de variable de Perl, pero hay una regla que la gente olvida. El primer carácter de un nombre definido por el usuario debe ser una letra o un guión bajo (no un dígito). Eso significa que debes usar una clase de caracteres diferente para la letra inicial:
[A-Za-z_][A-Za-z0-9_]*
Significa hacer coincidir el carácter de subrayado además de las letras minúsculas, mayúsculas y números.
Significa que el guión bajo también es igualado.