Twitter
RSS

EXPRESIONES REGULARES EN VERANO

/^hola/

Actualmente me encuentro trabajando sobre un proyecto de clustering y necesito filtrar la salidad de un programa, ya que no pude recompilar el programa xD, mejor opte por llamarlo desde C con la función System [Sintaxis: System(comando);], para ahondar más sobre el tema es acerca de encontrar las relaciones de palabras en un texto y de todas las relaciones que encuentra el parser solo necesito obtener algunas (verbo:sustantivo, verbo:adjetivo, etc).

Para ello uso un parser llamado Minipar el cual me ha dado algunos problemillas para recompilarlo y ya fastidiado opte por hacer lo más viable, invocarlo desde C y filtrar la salida que necesito usando el comando 'grep' y pasarle la expresion regular que necesito encuente.

Por ello y a modo de que no sabia mucho de expresiones regulares dejo a continuación una explicación acerca de estas y algunas maneras de hacer uso de ellas.


Expresiones Regulares.[tomado de aqui]

Las expresiones regulares constituyen un mecanismo bastante potente para realizar manipulaciones de cadenas de texto. El proceso para el que se usan estas expresiones, presente en el mundo el UNIX y el lenguaje Perl, es el de buscar y/o substituir una subcadena de texto dentro de otra cadena.

En principio esto puede hacerse usando los métodos del objeto string, pero el problema surge cuando no tenemos una subcadena fija y concreta sino que queremos buscar un texto que responda a un cierto esquema, como por ejemplo: buscar aquellas palabras que comienzan con http: y finalizan con una \, o buscar palabras que contengan una serie de números consecutivos, etc.; es en estos casos cuando tenemos que utilizar las expresiones regulares.
La subcadena que buscamos en el texto es lo que se llama un patrón y se construye encerrando entre dos barras inclinadas ( / ) una serie de caracteres normales y símbolos especiales llamados comodines o metacaracteres, (algo parecido a buscar archivos con nombre *.bat cuando queremos encontrar los ficheros con extensión bat). Este patrón es una descripción del texto que se está buscando y JavaScript encontrará las subcadenas que concuerdan con ese patrón o definición.

A continuación se muestra los caracteres que se usan para generar patrones y lo que significa cada uno de ellos, además de un ejemplo de como usarlos.

Significado

Ejemplo

Resultado

\

Marca de carácter especial

/\$ftp/ ó '\$ftp'

Busca la palabra $ftp

^

Comienzo de una línea

/^-/ ó '^⁻'

Líneas que comienzan por -

$

Final de una línea

/s$/ ó 's$'

Líneas que terminan por s

.

Cualquier carácter (menos salto de línea)

/\b.\b/ ó '\b.\b'

Palabras de una sóla letra



|

Indica opciones

/(L|l|f|)ocal/ ó '(L|l|f|)ocal'

Busca Local, local, focal

()

Agrupar caracteres

/(vocal)/ ó '(vocal)'

Busca vocal

[]

Conjunto de caracteres opcionales

/escrib[aoe]/ ó 'escrib[aoe]'

Vale escriba, escribo, escribe

La tabla que sigue describe los modificadores que pueden usarse con los caracteres que forman el patrón. Cada modificador actúa sobre el carácter o el paréntesis inmediatamente anterior.

Descripción

Ejemplo

Resultado

*

Repetir 0 o más veces

/l*234/

Valen 234, 1234, 11234...

+

Repetir 1 o más veces

/a*mar/

Valen amar, aamar, aaamar...

?

1 o 0 veces

/a?mar/

Valen amar, mar.

{n}

Exactamente n veces

/p{2}sado/

Vale ppsado

{n,}

Al menos n veces

/(m){2}ala/

Vale mmala, mmmala....

{m,n}

entre m y n veces

/tal{1,3}a/

Vale tala, talla, tallla

Los siguientes son caracteres especiales o metacaracteres para indicar caracteres de texto no imprimibles, como puedan ser el fín de línea o un tabulador, o grupos predefinidos de caracteres (alfabéticos, numéricos, etc...)

Significado

Ejemplos

Resultado

\b

Principio o final de palabra

/\bver\b/

Encuentra ver en "ver de", pero no en "verde"

\B

Frontera entre no-palabras

/\Bver\B/

Empareja ver con "Valverde" pero no con "verde"

\d

Un dígito

/[A-Z]\d/

No falla en "A4"

\D

Alfabético (no dígito)

/[A-Z]\D/

Fallaría en "A4"

\O

Carácter nulo

\t

Caracter ASCII 9 (tabulador)

\f

Salto de página

\n

Salto de línea

\w

Cualquier alfanumérico,
[a-zA-Z0-9_ ]

/\w+/

Encuentra frase en "frase.", pero no el . (punto).

\W

Opuesto a \w
([^a-zA-Z0-9_ ])

/\W/

Hallaría sólo el punto (.)

\s

Carácter tipo espacio (como tab)

/\sSi\s/

Encuentra Si en "Digo Si ", pero no en "Digo Sientate"

\S

Opuesto a \s

\cX

Carácter de control X

\c9

El tabulador

\oNN

Carácter octal NN

\xhh

El hexadecimal hh

/\x41/

Encuentra la A (ASCII Hex41) en "letra A"


Comments (0)