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,
\bes 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.