2011-04-26 11 views
8

¿Los "caracteres de control" utilizados en las expresiones regulares difieren mucho entre las diferentes implementaciones de los analizadores de expresiones regulares (por ejemplo, expresiones regulares en Ruby, Java, C#, sed, etc.). Por ejemplo, en Ruby, \D significa not a digit; ¿Significa lo mismo en Java, C# y sed? Supongo que lo que estoy preguntando es, ¿existe un "estándar" para las expresiones regulares que todos los analizadores de expresiones regex soportan?¿Hay un subconjunto común/estándar de expresiones regulares?

En caso negativo, ¿hay algún subconjunto común que deba aprenderse y dominarse (y luego aprender los específicos del analizador según se encuentran)?

+0

Creo que la expresión regular POSIX http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions es el estándar, y diferentes implementaciones se centran alrededor de ella, con algunas variaciones. – sawa

Respuesta

8

Consulte la lista de sintaxis básica en regular-expressions.info.

Y a comparison de los diferentes "sabores".

+0

Gracias por los enlaces, ¡será mi material de lectura durante semanas! La tabla de comparación es genial. – Zabba

1

Hay un núcleo común que es muy simple. Corresponde a las expresiones regulares tal como se implementaron en las herramientas de software originales, como ed, grep, sed y awk. Esto vale la pena aprender, porque los otros formatos son superconjuntos de este.

.  match any character 
[abc] match a, b, or c 
[^abc] match a character other than a, b, or c 
[a-c] match the range from a to c 
^  match the begininning of the line 
$  match the end of the line 
*  match zero or more of the preceding character 
\(...\) group for use as a back-reference 

† He dejado de lado expresiones con corchetes Posix porque nadie los usa y no están en el subconjunto. Los parens son por defecto mágicos excepto en las expresiones clásicas.

Cuestiones relacionadas