expresionregular-regex

Upload: javiernb564

Post on 10-Oct-2015

19 views

Category:

Documents


0 download

TRANSCRIPT

  • Expresin regular 1

    Expresin regularUna expresin regular, a menudo llamada tambin regex, es una secuencia de caracteres que forma un patrn debsqueda, principalmente utilizada para la bsqueda de patrones de cadenas de caracteres u operaciones desustituciones. Por ejemplo, el grupo formado por las cadenas Handel, Hndel y Haendel se describe con el patrn"H(a||ae)ndel". La mayora de las formalizaciones proporcionan los siguientes constructores: una expresin regulares una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres delalfabeto sobre el cual se define el lenguaje.

    En informtica, las expresiones regulares proveen una manera muy flexible de buscar o reconocer cadenas de texto.

    Construccin de expresiones regularesEspecficamente, las expresiones regulares se construyen utilizando los operadores unin, concatenacin y clausurade Kleene. Adems cada expresin regular tiene un autmata finito asociado.Alternacin

    Una barra vertical separa las alternativas. Por ejemplo, "marrn|castao" se corresponde con marrn ocastao.

    CuantificacinUn cuantificador tras un carcter especifica la frecuencia con la que ste puede ocurrir. Los cuantificadoresms comunes son +, ? y *:

    +El signo ms indica que el carcter que le precede debe aparecer al menos una vez. Por ejemplo, "ho+la"describe el conjunto infinito hola, hoola, hooola, hoooola, etctera.

    ?El signo de interrogacin indica que el carcter que le precede puede aparecer como mucho una vez. Porejemplo, "ob?scuro" se corresponde con oscuro y obscuro.

    *El asterisco indica que el carcter que le precede puede aparecer cero, una, o ms veces. Por ejemplo,"0*42" se corresponde con 42, 042, 0042, 00042, etctera.

    AgrupacinLos parntesis pueden usarse para definir el mbito y precedencia de los dems operadores. Por ejemplo,"(p|m)adre" es lo mismo que "padre|madre", y "(des)?amor" se corresponde con amor y con desamor.

    Los constructores pueden combinarse libremente dentro de la misma expresin, por lo que "H(ae?|)ndel" equivale a"H(a|ae|)ndel".La sintaxis precisa de las expresiones regulares cambia segn las herramientas y aplicaciones consideradas, y sedescribe con ms detalle a continuacin.Su utilidad ms obvia es la de describir un conjunto de cadenas, lo que resulta de utilidad en editores de texto yaplicaciones para buscar y manipular textos. Muchos lenguajes de programacin admiten el uso de expresionesregulares con este fin. Por ejemplo, Perl tiene un potente motor de expresiones regulares directamente incluido en susintaxis. Las herramientas proporcionadas por las distribuciones de Unix (incluyendo el editor sed y el filtro grep)fueron las primeras en popularizar el concepto de expresin regular.

  • Expresin regular 2

    AplicacionesNumerosos editores de texto y otras utilidades utilizan expresiones regulares para buscar y reemplazar patrones enun texto.

    Las expresiones regulares en programacinNota: Para el entendimiento completo de esta seccin es necesario poseer conocimientos generales acerca delenguajes de programacin o programacin en general.

    En el rea de la programacin las expresiones regulares son un mtodo por medio del cual se pueden realizarbsquedas dentro de cadenas de caracteres. Sin importar si la bsqueda requerida es de dos caracteres en una cadenade 10 o si es necesario encontrar todas las apariciones de un patrn definido de caracteres en un archivo de millonesde caracteres, las expresiones regulares proporcionan una solucin para el problema. Adicionalmente, un usoderivado de la bsqueda de patrones es la validacin de un formato especfico en una cadena de caracteres dada,como por ejemplo fechas o identificadores.Para poder utilizar las expresiones regulares al programar es necesario tener acceso a un motor de bsqueda con lacapacidad de utilizarlas. Es posible clasificar los motores disponibles en dos tipos: Motores para el programador yMotores para el usuario final.Motores para el usuario final: son programas que permiten realizar bsquedas sobre el contenido de un archivo osobre un texto extrado y colocado en el programa. Estn diseados para permitir al usuario realizar bsquedasavanzadas usando este mecanismo, sin embargo es necesario aprender a redactar expresiones regulares adecuadaspara poder utilizarlos eficientemente. Estos son algunos de los programas disponibles: grep: programa de los sistemas operativos Unix/Linux. sed: programa de los sistemas operativos Unix/Linux que permite la modificacin de la salida. PowerGrep: versin de grep para los sistemas operativos Windows. RegexBuddy: ayuda a crear las expresiones regulares en forma interactiva y luego le permite al usuario usarlas y

    guardarlas. EditPad Pro: permite realizar bsquedas con expresiones regulares sobre archivos y las muestra por medio de

    cdigo de colores para facilitar su lectura y comprensin.Motores para el programador: permiten automatizar el proceso de bsqueda de modo que sea posible utilizarlomuchas veces para un propsito especfico. Estas son algunas de las herramientas de programacin disponibles queofrecen motores de bsqueda con soporte a expresiones regulares: AWK: Forma una parte esencial del lenguaje y por extensin de la herramienta awk de Unix/Linux Java: existen varias bibliotecas hechas para java que permiten el uso de RegEx, y Sun planea dar soporte a estas

    desde el SDK JavaScript: a partir de la versin 1.2 (ie4+, ns4+) JavaScript tiene soporte integrado para expresiones regulares. Perl: es el lenguaje que hizo crecer a las expresiones regulares en el mbito de la programacin hasta llegar a lo

    que son hoy en da. PCRE: biblioteca de ExReg para C, C++ y otros lenguajes que puedan utilizar bibliotecas dll (Visual Basic 6 por

    ejemplo). PHP: tiene dos tipos diferentes de expresiones regulares disponibles para el programador, aunque la variante

    POSIX (ereg) va a ser desechada en PHP 6 [1]. Python: lenguaje de scripting con soporte de expresiones regulares mediante su librera . .Net Framework: provee un conjunto de clases mediante las cuales es posible utilizar expresiones regulares para

    hacer bsquedas, reemplazar cadenas y validar patrones.Nota: de las herramientas mencionadas con anterioridad se utilizan el EditPad Pro y el .Net Framework para darejemplos, aunque es posible utilizar las expresiones regulares con cualquier combinacin de las herramientas

  • Expresin regular 3

    mencionadas. Aunque en general las Expresiones Regulares utilizan un lenguaje comn en todas las herramientas,las explicaciones prcticas acerca de la utilizacin de las herramientas y los ejemplos de cdigo deben serinterpretados de forma diferente. Tambin es necesario hacer notar que existen algunos detalles de sintaxis de lasexpresiones regulares que son propios del .Net Framework que se utilizan en forma diferente en las demsherramientas de programacin. Cuando estos casos se den se har notar en forma explcita para que el lector puedabuscar informacin respecto a estos detalles en fuentes adicionales. En el futuro se incluirn adicionalmenteejemplos de otras herramientas y lenguajes de programacin.Expresiones regulares como motor de bsqueda

    Las expresiones regulares permiten encontrar porciones especficas de texto dentro de una cadena ms grande decaracteres. As, si es necesario encontrar el texto "lote" en la expresin "el ocelote salt al lote contiguo" cualquiermotor de bsqueda sera capaz de efectuar esta labor. Sin embargo, la mayora de los motores de bsquedaencontraran tambin el fragmento "lote" de la palabra "ocelote", lo cual podra no ser el resultado esperado. Algunosmotores de bsqueda permiten adicionalmente especificar que se desea encontrar solamente palabras completas,solucionando este problema. Las expresiones regulares permiten especificar todas estas opciones adicionales ymuchas otras sin necesidad de configurar opciones adicionales, sino utilizando el mismo texto de bsqueda como unlenguaje que permite enviarle al motor de bsqueda exactamente lo que deseamos encontrar en todos los casos, sinnecesidad de activar opciones adicionales al realizar la bsqueda.Expresiones regulares como lenguaje

    Para especificar opciones dentro del texto a buscar se utiliza un lenguaje o convencin mediante el cual se letransmite al motor de bsqueda el resultado que se desea obtener. Este lenguaje le da un significado especial a unaserie de caracteres. Por lo tanto cuando el motor de bsqueda de expresiones regulares encuentre estos caracteres nolos buscar en el texto en forma literal, sino que buscar lo que los caracteres significan. A estos caracteres se lesllama algunas veces "meta-caracteres". A continuacin se listan los principales meta-caracteres y su funcin y cmolos interpreta el motor de expresiones regulares.

    Descripcin de las expresiones regulares

    El punto "."El punto se interpreta por el motor de bsqueda como "cualquier carcter", es decir, busca cualquier carcter SINincluir los saltos de lnea. Los motores de Expresiones regulares tienen una opcin de configuracin que permitemodificar este comportamiento. En .Net Framework se utiliza la opcin RegexOptions.Singleline para especificar laopcin de que busque todos los caracteres incluidos el salto de lnea (\n).El punto se utiliza de la siguiente forma: Si se le dice al motor de RegEx que busque "g.t" en la cadena "el gato depiedra en la gtica puerta de getisboro goot" el motor de bsqueda encontrar "gat", "gt" y por ltimo "get". Nteseque el motor de bsqueda no encuentra "goot"; esto es porque el punto representa un solo carcter y nicamente uno.Si es necesario que el motor encuentre tambin la expresin "goot", ser necesario utilizar repeticiones, las cuales seexplican ms adelante.Aunque el punto es muy til para encontrar caracteres que no conocemos, es necesario recordar que corresponde acualquier carcter y que muchas veces esto no es lo que se requiere. Es muy diferente buscar cualquier carcter quebuscar cualquier carcter alfanumrico o cualquier dgito o cualquier no-dgito o cualquier no-alfanumrico. Se debetomar esto en cuenta antes de utilizar el punto y obtener resultados no deseados.

  • Expresin regular 4

    La admiracin "!"Se utiliza para realizar una "bsqueda anticipada negativa". La construcin de la expresin regular es con el par deparntesis, el parntesis de apertura seguida de un signo de interrogacin y un signo de exclamacin. Dentro de labsqueda tenemos la expresin regular. Por ejemplo, para excluir exactamente una palabra, habr que utilizar"^(palabra.+|(?!palabra).*)$"

    La barra inversa o contrabarra "\"Se utiliza para "marcar" el siguiente carcter de la expresin de bsqueda de forma que este adquiera un significadoespecial o deje de tenerlo. O sea, la barra inversa no se utiliza nunca por s sola, sino en combinacin con otroscaracteres. Al utilizarlo por ejemplo en combinacin con el punto "\." este deja de tener su significado normal y secomporta como un carcter literal.De la misma forma, cuando se coloca la barra inversa seguida de cualquiera de los caracteres especiales quediscutiremos a continuacin, estos dejan de tener su significado especial y se convierten en caracteres de bsquedaliteral.Como ya se mencion con anterioridad, la barra inversa tambin puede darle significado especial a caracteres que nolo tienen. A continuacin hay una lista de algunas de estas combinaciones: \t Representa un tabulador. \r Representa el "retorno de carro" o "regreso al inicio" o sea el lugar en que la lnea vuelve a iniciar. \n Representa la "nueva lnea" el carcter por medio del cual una lnea da inicio. Es necesario recordar que en

    Windows es necesaria una combinacin de \r\n para comenzar una nueva lnea, mientras que en Unix solamentese usa \n y en Mac_OS clsico se usa solamente \r.

    \a Representa una "campana" o "beep" que se produce al imprimir este carcter. \e Representa la tecla "Esc" o "Escape" \f Representa un salto de pgina \v Representa un tabulador vertical \x Se utiliza para representar caracteres ASCII o ANSI si conoce su cdigo. De esta forma, si se busca el

    smbolo de derechos de autor y la fuente en la que se busca utiliza el conjunto de caracteres Latin-1 es posibleencontrarlo utilizando "\xA9".

    \u Se utiliza para representar caracteres Unicode si se conoce su cdigo. "\u00A2" representa el smbolo decentavos. No todos los motores de Expresiones Regulares soportan Unicode. El .Net Framework lo hace, pero elEditPad Pro no, por ejemplo.

    \d Representa un dgito del 0 al 9. \w Representa cualquier carcter alfanumrico. \s Representa un espacio en blanco. \D Representa cualquier carcter que no sea un dgito del 0 al 9. \W Representa cualquier carcter no alfanumrico. \S Representa cualquier carcter que no sea un espacio en blanco. \A Representa el inicio de la cadena. No un carcter sino una posicin. \Z Representa el final de la cadena. No un carcter sino una posicin. \b Marca la posicin de una palabra limitada por espacios en blanco, puntuacin o el inicio/final de una

    cadena. \B Marca la posicin entre dos caracteres alfanumricos o dos no-alfanumricos.Notas: Utilidades como Charmap.exe de Windows o gucharmap de GNOME permiten encontrar los cdigos

    ASCII/ANSI/UNICODE para utilizarlos en Expresiones Regulares.

  • Expresin regular 5

    Algunos lenguajes, como Java, asignan su propio significado a la barra invertida, por lo que deber repetirse paraque sea considerada una expresin regular (ej. String expresion="\\d.\\d" para indicar el patrn \d.\d).

    Los corchetes "[ ]"La funcin de los corchetes en el lenguaje de las expresiones regulares es representar "clases de caracteres", o sea,agrupar caracteres en grupos o clases. Son tiles cuando es necesario buscar uno de un grupo de caracteres. Dentrode los corchetes es posible utilizar el guion "-" para especificar rangos de caracteres. Adicionalmente, losmetacaracteres pierden su significado y se convierten en literales cuando se encuentran dentro de los corchetes. Porejemplo, como vimos en la entrega anterior "\d" nos es til para buscar cualquier carcter que represente un dgito.Sin embargo esta denominacin no incluye el punto "." que divide la parte decimal de un nmero. Para buscarcualquier carcter que representa un dgito o un punto podemos utilizar la expresin regular "[\d.]". Como se hizonotar anteriormente, dentro de los corchetes, el punto representa un carcter literal y no un metacarcter, por lo queno es necesario antecederlo con la barra inversa. El nico carcter que es necesario anteceder con la barra inversadentro de los corchetes es la propia barra inversa. La expresin regular "[\dA-Fa-f]" nos permite encontrar dgitoshexadecimales. Los corchetes nos permiten tambin encontrar palabras an si estn escritas de forma errnea, porejemplo, la expresin regular "expresi[o]n" permite encontrar en un texto la palabra "expresin" aunque se hayaescrito con o sin tilde. Es necesario aclarar que sin importar cuantos caracteres se introduzcan dentro del grupo pormedio de los corchetes, el grupo slo le dice al motor de bsqueda que encuentre un solo carcter a la vez, es decir,que "expresi[o]n" no encontrar "expresioon" o "expresion".

    La barra "|"Sirve para indicar una de varias opciones. Por ejemplo, la expresin regular "a|e" encontrar cualquier "a" o "e"dentro del texto. La expresin regular "este|oeste|norte|sur" permitir encontrar cualquiera de los nombres de lospuntos cardinales. La barra se utiliza comnmente en conjunto con otros caracteres especiales.

    El signo de dlar "$"Representa el final de la cadena de caracteres o el final de la lnea, si se utiliza el modo multi-lnea. No representa uncarcter en especial sino una posicin. Si se utiliza la expresin regular "\.$" el motor encontrar todos los lugaresdonde un punto finalice la lnea, lo que es til para avanzar entre prrafos.

    El acento circunflejo "^"Este carcter tiene una doble funcionalidad, que difiere cuando se utiliza individualmente y cuando se utiliza enconjunto con otros caracteres especiales. En primer lugar su funcionalidad como carcter individual: el carcter "^"representa el inicio de la cadena (de la misma forma que el signo de dlar "$" representa el final de la cadena). Portanto, si se utiliza la expresin regular "^[a-z]" el motor encontrar todos los prrafos que den inicio con una letraminscula. Cuando se utiliza en conjunto con los corchetes de la siguiente forma "[^\w ]" permite encontrarcualquier carcter que NO se encuentre dentro del grupo indicado. La expresin indicada permite encontrar, porejemplo, cualquier carcter que no sea alfanumrico o un espacio, es decir, busca todos los smbolos de puntuacin ydems caracteres especiales.La utilizacin en conjunto de los caracteres especiales "^" y "$" permite realizar validaciones en forma sencilla. Porejemplo "^\d$" permite asegurar que la cadena a verificar representa un nico dgito "^\d\d/\d\d/\d\d\d\d$" permitevalidar una fecha en formato corto, aunque no permite verificar si es una fecha vlida, ya que 99/99/9999 tambinsera vlido en este formato; la validacin completa de una fecha tambin es posible mediante expresiones regulares,como se ejemplifica ms adelante.

  • Expresin regular 6

    Los parntesis "()"De forma similar que los corchetes, los parntesis sirven para agrupar caracteres, sin embargo existen variasdiferencias fundamentales entre los grupos establecidos por medio de corchetes y los grupos establecidos porparntesis: Los caracteres especiales conservan su significado dentro de los parntesis. Los grupos establecidos con parntesis establecen una "etiqueta" o "punto de referencia" para el motor de

    bsqueda que puede ser utilizada posteriormente como se denota ms adelante. Utilizados en conjunto con la barra "|" permite hacer bsquedas opcionales. Por ejemplo la expresin regular "al

    (este|oeste|norte|sur) de" permite buscar textos que den indicaciones por medio de puntos cardinales, mientras quela expresin regular "este|oeste|norte|sur" encontrara "este" en la palabra "esteban", no pudiendo cumplir con estepropsito.

    Utilizados en conjunto con otros caracteres especiales que se detallan posteriormente, ofrece funcionalidadadicional.

    El signo de interrogacin "?"El signo de interrogacin tiene varias funciones dentro del lenguaje de las expresiones regulares. La primera de ellases especificar que una parte de la bsqueda es opcional. Por ejemplo, la expresin regular "ob?scuridad" permiteencontrar tanto "oscuridad" como "obscuridad". En conjunto con los parntesis redondos permite especificar que unconjunto mayor de caracteres es opcional; por ejemplo "Nov(\.|iembre|ember)?" permite encontrar tanto "Nov" como"Nov.", "Noviembre" y "November". Como se mencion anteriormente, los parntesis nos permiten establecer un"punto de referencia" para el motor de bsqueda. Sin embargo, algunas veces, no se desea utilizarlos con estepropsito, como en el ejemplo anterior "Nov(\.|iembre|ember)?". En este caso el establecimiento de este punto dereferencia (que se detalla ms adelante) representa una inversin intil de recursos por parte del motor de bsqueda.Para evitarlo se puede utilizar el signo de pregunta de la siguiente forma: "Nov(?:\.|iembre|ember)?". Aunque elresultado obtenido ser el mismo, el motor de bsqueda no realizar una inversin intil de recursos en este grupo,sino que lo ignorar. Cuando no sea necesario reutilizar el grupo, es aconsejable utilizar este formato. De formasimilar, es posible utilizar el signo de pregunta con otro significado: Los parntesis definen grupos "annimos", sinembargo el signo de pregunta en conjunto con los parntesis triangulares "" permite "nombrar" estos grupos de lasiguiente forma: "^(?\d\d)/(?\d\d)/(?\d\d\d\d)$"; Con lo cual se le especifica al motor debsqueda que los primeros dos dgitos encontrados llevarn la etiqueta "Da", los segundos la etiqueta "Mes" y losltimos cuatro dgitos llevarn la etiqueta "Ao".NOTA: a pesar de la complejidad y flexibilidad dada por los caracteres especiales estudiados hasta ahora, en sumayora nos permiten encontrar solamente un carcter a la vez, o un grupo de caracteres a la vez. Los metacaracteresenumerados en adelante permiten establecer repeticiones.

    Las llaves "{}"Comnmente las llaves son caracteres literales cuando se utilizan por separado en una expresin regular. Para queadquieran su funcin de metacaracteres es necesario que encierren uno o varios nmeros separados por coma y queestn colocados a la derecha de otra expresin regular de la siguiente forma: "\d{2}" Esta expresin le dice al motorde bsqueda que encuentre dos dgitos contiguos. Utilizando esta frmula podramos convertir el ejemplo"^\d\d/\d\d/\d\d\d\d$" que serva para validar un formato de fecha en "^\d{2}/\d{2}/\d{4}$" para una mayor claridaden la lectura de la expresin."\d{2,4}" Esta forma aade un segundo nmero separado por una coma, el cul indica al motor de bsqueda quecomo mximo debe aparecer 4 veces la expresin regular \d. Los posibles valores son: "^\d\d$" (mnimo 2 repeticiones) "^\d\d\d$"(tiene 3 repeticiones, por lo tanto entra en el rango 2-4)

  • Expresin regular 7

    "^\d\d\d\d$" (mximo 4 repeticiones)Nota: aunque esta forma de encontrar elementos repetidos es muy til, algunas veces no se conoce con claridadcuantas veces se repite lo que se busca o su grado de repeticin es variable. En estos casos los siguientesmetacaracteres son tiles.

    El asterisco "*"El asterisco sirve para encontrar algo que se encuentra repetido 0 o ms veces. Por ejemplo, utilizando la expresin"[a-zA-Z]\d*" ser posible encontrar tanto "H" como "H1", "H01", "H100" y "H1000", es decir, una letra seguida deun nmero indefinido de dgitos. Es necesario tener cuidado con el comportamiento del asterisco, ya que ste, pordefecto, trata de encontrar la mayor cantidad posible de caracteres que correspondan con el patrn que se busca. Deesta forma si se utiliza "\(.*\)" para encontrar cualquier cadena que se encuentre entre parntesis y se lo aplica sobreel texto "Ver (Fig. 1) y (Fig. 2)" se esperara que el motor de bsqueda encuentre los textos "(Fig. 1)" y "(Fig. 2)",sin embargo, debido a esta caracterstica, en su lugar encontrar el texto "(Fig. 1) y (Fig. 2)". Esto sucede porque elasterisco le dice al motor de bsqueda que llene todos los espacios posibles entre los dos parntesis. Para obtener elresultado deseado se debe utilizar el asterisco en conjunto con el signo de interrogacin de la siguiente forma:"\(.*?\)" Esto es equivalente a decirle al motor de bsqueda que "Encuentre un parntesis de apertura y luegoencuentre cualquier secuencia de caracteres hasta que encuentre un parntesis de cierre".

    El signo de suma "+"Se utiliza para encontrar una cadena que se encuentre repetida una o ms veces. A diferencia del asterisco, laexpresin "[a-zA-Z]\d+" encontrar "H1" pero no encontrar "H". Tambin es posible utilizar este metacarcter enconjunto con el signo de interrogacin para limitar hasta donde se efecta la repeticin.

    Grupos annimosLos grupos annimos se establecen cada vez que se encierra una expresin regular en parntesis, por lo que laexpresin "" define un grupo annimo que tendr como resultado que el motor de bsquedaalmacenar una referencia al texto que corresponda a la expresin encerrada entre los parntesis.La forma ms inmediata de utilizar los grupos que se definen es dentro de la misma expresin regular, lo cual serealiza utilizando la barra inversa "\" seguida del nmero del grupo al que se desea hacer referencia de la siguienteforma: ".*?" Esta expresin regular encontrar tanto la cadena "Esta" como lacadena "prueba" en el texto "Esta es una prueba" a pesar de que la expresin nocontiene los literales "font" y "B".Otra forma de utilizar los grupos es en el lenguaje de programacin que se est utilizando. Cada lenguaje tiene unaforma distinta de acceder a los grupos. Los ejemplos enumerados a continuacin utilizan las clases del .NetFramework, usando la sintxis de C# (la cual puede fcilmente adaptarse a VB .Net o cualquier otro lenguaje delFramework o incluso Java o JavaScript).Para utilizar el motor de bsqueda del .Net Framework es necesario en primer lugar hacer referencia al espacio denombres System.Text.RegularExpressions. Luego es necesario declarar una instancia de la clase Regex de lasiguiente forma:

    Regex _TagParser = new Regex("");

    Luego asumiendo que el texto que se desea examinar con la expresin regular se encuentra en la variable "sText"podemos recorrer todas las instancias encontradas de la siguiente forma:

    foreach(Match CurrentMatch in _TagParser.Matches(sText)){

    // ----- Cdigo extra aqu -----

  • Expresin regular 8

    }

    Luego se puede utilizar la propiedad Groups de la clase Match para traer el resultado de la bsqueda:

    foreach(Match CurrentMatch in _TagParser.Matches(sText)){

    String sTagName = CurrentMatch. Groups[1].Value;

    }

    Grupos nominales

    Los grupos nominales son aquellos a los que se les asigna un nombre, dentro de la expresin regular para poderutilizarlos posteriormente. Esto se hace de forma diferente en los distintos motores de bsqueda, a continuacin seexplica como hacerlo en el motor del .Net Framework.Utilizando el ejemplo anterior es posible convertir "" en "" Paraencontrar etiquetas HTML. Ntese el signo de pregunta y el texto "TagName" encerrado entre parntesistriangulares, seguido de ste. Para utilizar este ejemplo en el .Net Framework es posible utilizar el siguiente cdigo:

    Regex _TagParser = new Regex("");

    foreach(Match CurrentMatch in _TagParser.Matches(sText)){

    String sTagName = CurrentMatch. Groups["TagName"]. Value;

    }

    Es posible definir tantos grupos como sea necesario, de esta forma se puede definir algo como:"" para encontrar no solo el nombre del tag HTML sino tambinsus atributos de la siguiente forma:

    Regex _TagParser = new Regex("");

    foreach(Match CurrentMatch in _TagParser.Matches(sText)){

    String sTagName = CurrentMatch. Groups["TagName"]. Value;

    String sAttributes = CurrentMatch. Groups["Attributes"]. Value;

    }

    Pero es posible ir mucho ms all de la siguiente forma:

    "

  • Expresin regular 9

    AttributesCollection. Add(CurrentCapture. Value)

    }

    foreach(Capture CurrentCapture in CurrentMatch. Groups["value"].

    Captures){

    ValuesCollection. Add(CurrentCapture. Value)

    }

    }

    Es posible profundizar utilizando una expresin regular como esta:

    "

  • Fuentes y contribuyentes del artculo 10

    Fuentes y contribuyentes del artculoExpresin regular Fuente: http://es.wikipedia.org/w/index.php?oldid=76066365 Contribuyentes: 0xff, 333, Alexav8, Alvlin, Andreasmperu, Angelgonzg, Antolingarcia, Arafael, Ascnder,Bigsus, Borja Snchez, Cfvergara, ColdWind, Crescent Moon, Cristhiangr, Damifb, Dermot, Diegojc, Diegusjaimes, Digigalos, Dodo, Er Komandante, Erwin, Exos, Ee, Feandir, Fixertool,Francisco2289, George McFinnigan, GermanX, Hari Seldon, Hernaldo, Hiperfelix, Igna, Joaquin medina, JoaquinFerrero, John plaut, Jomabeal, JorgeGG, Korg, Laura Fiorucci, Lcmarzulli, Luisjunco, M4r10c354r, Macarse, Maldoror, ManuelGR, Matdrodes, Mcanto, Moriel, Muro de Aguas, Murven, NaSz, Nixn, Paconaranjo, Periku, Pilaf, Rbrena, Resped, Rlizarralde, SantiagoGala,Silvestre, Sms, SpeedyGonzalez, TXiKi, Tano4595, Technopat, Toto, Triku, UberKaeL, Vector Mike Bravo Sierra, Viko, Waka Waka, scar Becerril, 170 ediciones annimas

    LicenciaCreative Commons Attribution-Share Alike 3.0//creativecommons.org/licenses/by-sa/3.0/

    Expresin regularConstruccin de expresiones regulares Aplicaciones Las expresiones regulares en programacin Descripcin de las expresiones regulares El punto "." La admiracin "!" La barra inversa o contrabarra "\" Los corchetes "[ ]" La barra "|" El signo de dlar "$" El acento circunflejo "^" Los parntesis "()" El signo de interrogacin "?" Las llaves "{}" El asterisco "*" El signo de suma "+" Grupos annimos

    Enlaces externos

    Licencia