2010-07-12 10 views
8

No soy un inglés nativo, así que no entiendo bien el significado de 'sabor' ¿se refiere a una sintaxis de expresiones regulares? y si es así, ¿cuántas sintaxis de expresiones regulares hay?En el mundo regex, ¿qué sabor tiene y qué sabor usa Java?

BRE ERE Perl etc. ??

+1

La documentación API de la clase 'java.util.regex.Pattern' describe la sintaxis exacta de expresiones regulares en Java. – Jesper

Respuesta

3
  • Sabor hace referencia al motor de expresiones regulares: la sintaxis y las propiedades adicionales admitidas por el motor de expresiones regulares en particular.
  • Pattern clase documenta las propiedades de la java regex engine
  • Aparte de las cosas básicas como el significado de meta-caracteres, diferentes implementaciones de los motores de expresiones regulares soportan diferentes tipos de sintaxis. Por ejemplo
    • motores POSIX apoyan [:digit:] para los dígitos (igual que [0-9]
    • motores compatibles Perl apoyan \d acceso directo para los dígitos.
    • JavaScript no soporta el trasero mirada
    • PHP y algunos otros apoyan mirar el trasero, pero necesita que sean de longitud fija
    • Los motores Regex de los editores de texto (Notepad ++) generalmente no admiten la apariencia.
1

Java utiliza Perl como reg-ex sintaxis

1

un "sabor" en este contexto es una sintaxis particular, ya que ha conjeturado. Hay muchos; contarlos sería solo un esfuerzo académico.

Para encontrar los que se usan generalmente, mira los formularios aceptados por grep.

Java puede usar cualquier sintaxis que tenga una implementación Java.

8

Hay muchas variaciones diferentes de las características que implementa un motor regex, qué técnica utiliza "debajo del capó" y qué sintaxis utiliza para ciertas características.

Hay un artículo muy bueno y una tabla de comparación en regular-expressions.info.

El paquete de expresiones regulares de Java implementa un motor de expresiones regulares "similar a Perl", pero tiene algunas características adicionales como cuantificadores posesivos (.*+) y aserciones de búsqueda de longitud variable (pero finitas). Por otro lado, omite algunas características que tiene Perl, a saber, expresiones condicionales o comentarios. En general, es una implementación con todas las funciones.

Cuestiones relacionadas