El Codiguero
Programando para la wé

Avatar de alvlin Publicado por alvlin, el 12/10/2008
Categorías: Programación

Diferencias de sintaxis entre POSIX y Perl

En partes anteriores se menciona varias veces que existen diferencias de sintaxis entre las expresiones regulares POSIX y las expresiones regulares compatibles con Perl.

Hasta ahora se han descrito únicamente las expresiones regulares POSIX. El motivo para esto es que la diferencia entre Perl y POSIX no radica en cuantificadores, metacaracteres y clases, sino que radica en algo que no tiene relación directa con el patrón mismo.
Estas diferencias son basicamente dos: los delimitadores y los modificadores. Fuera de estos dos puntos un patrón POSIX es perfectamente válido para Perl.
Entre los lenguajes que utilizan expresiones regulares compatibles con Perl se encuentran:

  • PHP (que puede trabajar con ambas sintaxis)
  • Javascript
  • Java
  • Perl (obviamente)

(y seguramente una miríada de lenguajes más).

Delimitadores

El patrón [a-z] es perfectamente válido para POSIX. No requiere ningún extra, es completo.
Sin embargo, el mismo patrón escrito con sintaxis compatible con Perl, debe escribirse como:
/[a-z]/

Cuando se utiliza la sintaxis de Perl, el patrón completo debe ir delimitado por un caracter "/" al comienzo y al final. Esto implica por supuesto que cualquier barra / que forme parte del patrón mismo debe escaparse con la contrabarra \ (quedando "\/" en vez de "/").

Algo interesante a recordar es que si bien por defecto se utiliza la barra /, en realidad se puede utilizar cualquier caracter especial como delimitador.
En este contexto "caracter especial" significa un caracter que no es un número ni una letra, aunque no todos están permitidos. Los que se usan comunmente son #, @ y !.
Por ejemplo, los siguientes patrones son completamente equivalentes:
/[a-z]\/[0-9]/
@[a-z]/[0-9]@
#[a-z]/[0-9]#
![a-z]/[0-9]!

Nótese cómo gracias a que / no se utiliza como delimitador, solamente en el primer ejemplo se requiere escapar la barra que separa [a-z] y [0-9].

Modificadores

La sintaxis Perl admite el uso de modificadores: letras que tienen un significado especial (que en general dependen del lenguaje que se esté usando) y que modifican el comportamiento del patrón.

Uno de los pocos modificadores que son comunes a todas las implementaciones de expresiones regulares compatibles con Perl es i, que indica que el patrón no debe considerar mayúsculas y minúsculas. Así, los siguientes patrones son equivalentes:
/[a-zA-Z]/
/[a-z]/i

La lista completa de modificadores soportados, como ya se mencionó, depende del lenguaje con el que se esté trabajando.

  • Digg
  • del.icio.us
  • Meneame
  • Reddit
  • Technorati
  • StumbleUpon
  • Facebook
  • LinkedIn
  • MySpace
  • Yahoo! Buzz
  • YahooMyWeb

» 1 Comentario para “Diferencias de sintaxis entre POSIX y Perl”

  1. Fique por dentro Delimitadores » Blog Archive » El Codiguero » Diferencias de sintaxis entre POSIX y Perl escribió:

    [...] los lenguajes que utilizan expresiones regulares compatibles con Perl se … fique por dentro clique aqui. Fonte: [...]

» Si te pareció interesante, dejá un comentario...



Todo el contenido de este sitio está bajo una licencia de Creative Commons.

Campaña AnyBrowser | XHTML 1.0 Válido | CSS 2 Válido | WAI A

Diseño creado por alvlin. Sitio basado en WordPress