Como complemento a mi presentación de hoy en la reunión de noviembre del Gultij, publico esta tabla de expresiones regulares.
Observaciones:
- Esta tabla no contempla la compatibilidad con POSIX. Por ejemplo,
\b
es un Perlismo que da la casualidad de que otros lo soportan también. Wikipedia trae información más detallada. - Perl toma algunas consideraciones con los fines de línea (
\n
). La manera más simple y segura de hacer matching en Perl de forma consistente con los demás motores es hacerle chomp a la línea. Como dicen en los comerciales: se aplican restricciones.
Si le detectan errores, por favor háganmelos saber.
Perl | GNU Grep | GNU Grep Ext | Gawk | GNU Sed | GNU Sed Ext | |
Caracteres | ||||||
Comodín | . (punto) | . (punto) | . (punto) | . (punto) | . (punto) | . (punto) |
Juego | [a-z] | [a-z] | [a-z] | [a-z] | [a-z] | [a-z] |
Excepto juego | [^a-z] | [^a-z] | [^a-z] | [^a-z] | [^a-z] | [^a-z] |
Clase alpha | [:alpha:] | [:alpha:] | [:alpha:] | [:alpha:] | [:alpha:] | [:alpha:] |
Clase dígitos | [:digit:], \d | [:digit:] | [:digit:] | [:digit:] | [:digit:] | [:digit:] |
Clase controlchars | [:cntrl:] | [:cntrl:] | [:cntrl:] | [:cntrl:] | [:cntrl:] | [:cntrl:] |
Clase alnum | [:alnum:] | [:alnum:] | [:alnum:] | [:alnum:] | [:alnum:] | [:alnum:] |
Clase visibles | [:graph:] | [:graph:] | [:graph:] | [:graph:] | [:graph:] | [:graph:] |
Clase minúsculas | [:lower:] | [:lower:] | [:lower:] | [:lower:] | [:lower:] | [:lower:] |
Clase mayúsculas | [:upper:] | [:upper:] | [:upper:] | [:upper:] | [:upper:] | [:upper:] |
Clase imprimibles | [:print:] | [:print:] | [:print:] | [:print:] | [:print:] | [:print:] |
Clase puntuación | [:punct:] | [:punct:] | [:punct:] | [:punct:] | [:punct:] | [:punct:] |
Clase espacios | [:blank:], \h | [:blank:] | [:blank:] | [:blank:] | [:blank:] | [:blank:] |
Clase espacios y \n | [:space:], \s | [:space:], \s | [:space:], \s | [:space:], \s | [:space:], \s | [:space:], \s |
Clase hexes | [:xdigit:] | [:xdigit:] | [:xdigit:] | [:xdigit:] | [:xdigit:] | [:xdigit:] |
Límite de palabra | \b | \b | \b | (no hay) | \b | \b |
[_[:alnum:]] | \w | \w | \w | \w | \w | \w |
[^_[:alnum:]] (separadores) | \W | \W | \W | \W | \W | \W |
Anclas | ||||||
Inicio | ^cadena | ^cadena | ^cadena | ^cadena | ^cadena | ^cadena |
Fin | cadena$ | cadena$ | cadena$ | cadena$ | cadena$ | cadena$ |
Calificadores | ||||||
Agrupamiento | (j) | \(j\) | (j) | (j) | \(j\) | (j) |
Referencia | \1 | \1 | \1 | (no hay) | \1 | \1 |
Cuantificadores | ||||||
Cero o más | * | * | * | * | * | * |
Cero o uno | ? | \? | ? | ? | \? | ? |
Al menos 1 | + | \+ | + | + | \+ | \1 |
Rango | {m,n} | \{m,n\} | {m,n} | {m,n} | \{m,n\} | {m,n} |
Operadores | ||||||
Concatenación | ab | ab | ab | ab | ab | ab |
Alternancia | | | \| | | | | | \| | | |
Muy bueno!
Gracias.