Categorías
- 15m
- adsense
- blogging
- consumo
- desarrollo y programación
- .htaccess
- .net
- ajax
- ajax.net
- ant
- apache
- ascii
- bases de datos
- bbpress
- css
- delphi
- dom
- dreamweaver
- eclipse
- emule
- expr. regulares
- firefox
- formularios web
- ftp
- gmail
- google-gwt
- hibernate
- html
- iis
- internet explorer
- java
- javascript
- librerias
- linux
- microformats
- ofimática
- php
- servicios web
- ssl
- ubuntu
- vbscript
- wiki
- wordpress
- xampp
- xml
- economía
- hardware
- hogar
- matemáticas
- motos
- ofertas
- opinión
- recetas
- salud
- Sin categoría
- sistemas operativos
- tecnologia
- tramites y legislación
Escribir un patrón de expresiones regulares
Un patrón de expresiones regulares está compuesto de caracteres simples, como
/abc/; o una combinación de caracteres simples y especiales, como/ab*c/o/Capítulo (d+).d*/. El último ejemplo incluye paréntesis, los cuales se usan como un dispositivo de memoria.Usar patrones simples
Los patrones simples se construyen con caracteres para los cuales se busca una coincidencia directa. Por ejemplo:
/abc/coincide con las combinaciones de caracteres en cadenas solamente cuando exactamente los caracteres abc aparecen juntos y en ese orden. Una coincidencia se encontraría en las cadenas Hi, do you know your abcs? y The latest airplane designs evolved from slabcraft.. En ambos casos la coincidencia es con la subcadena abc. Por ejemplo, no habría coincidencia con la cadena Grab crab porque no contiene la subcadena abc.Usar caracteres especiales
Cuando la búsqueda de una coincidencia requiere más que una coincidencia directa, como la búsqueda de una o más veces, o buscar un espacio en blanco, el patrón incluye caracteres especiales. Por ejemplo, el patrón
/ab*c/coincide con cualquier combinación de caracteres en la que se encuentre una única a seguida de cero o más b (*significa 0 o más ocurrencias del elemento que le precede) e inmediatamente seguido de una c. En la cadena cbbabbbbcdebc, el patrón coincide con la subcadena abbbbc.La siguiente tabla muestra una lista completa de los caracteres especiales que pueden ser empleados en expresiones regulares.
/b/coincide con el carácter b. Sin embargo, colocando una barra invertida (backslash) antes de lab, usando así/b/, el carácter se convierte en especial significando un límite de palabra.*es un caracter especial que significa 0 o más ocurrencias del elemento que le precede; por ejemplo,/a*/significa cero o más letrasa. Para encontrar un*literalmente, hay que precederlo de una barra invertida; por ejemplo,/a*/coincide con a*./^U/no coincide con la U en una U, pero sí coincide con la primera U en Una U./t$/no coincide con la t en eater, pero sí lo hace en eat./bo*/coicide con boooo en A ghost booooed y b en A bird warbled, pero no en A goat grunted.{1,}. Por ejemplo,/a+/coincide con la a en candy y todas las letrasaen caaaaaaandy./e?le?/coincide con el en angel y con le en angle.Si se utiliza inmediatamente después de alguno de los cuantificadores*,+,?, o{}, transforma el cuantificador en no codicioso (coincidiendo con el mínimo número de elementos posibles), en contraposición al funcionamiento por defecto, en el que se comportan de forma codiciosa (concordando con el máximo número de elementos posibles). También utilizado en las instrucciones predictivas [lookahead assertions], descritas comox(?=y)yx(?!y)más abajo en esta tabla./.n/coincide con an y con on en nay, an apple is on the tree, pero no con nay./(foo)/coincide y recuerda foo en foo bar. La subcadena coincidente puede ser rellamada usando el vector de elementos resultante [1], …, [n]./Jack(?=Sprat)/coincide con Jack sólo si es seguido de Sprat./Jack(?=Sprat|Frost)/coincide con Jack sólo si es seguido de Sprat o Frost. Sin embargo, ni Sprat ni Frost forman parte de la coincidencia resultante./d+(?!.)/coincide con un número sólo si este no está seguido de un punto decimal. La expresión regular/d+(?!.)/.exec(3.141)coincide con 141 pero no con 3.141./green|red/coincide con green en green apple y red en red apple.nes un entero positivo. Coincide exactamente connocurrencias del caracter que lo precede. Por ejemplo,/a{2}/no coincide con la a en candy, pero si coincide con todas las letras a en caandy, y las primeras dos aes en caaandy.nes un entero positivo. Coincide con al menos n ocurrencias del caracter que le precede. Por ejemplo,/a{2,}no coincide con la a en candy, Pero coincide con todas las letras a en caandy y en caaaaaaandy./a{1,3}/no coincide con nada en cndy, pero sí con la a en candy, las primeras dos aes en caandy, y las primeras tres aes en caaaaaaandy. Nótese que al buscar coincidencia con caaaaaaandy, la coincidencia es aaa, a pesar de que la cadena original tuviese más aes.[abcd]es lo mismo que[a-d]. Esto debería coincidir con la b en brisket y la c en ache.[^abc]es lo mismo que[^a-c]. Inicialmente coincidiría con r en brisket y la h en chop.b)[b]). Por ejemplo,/bnw/coincide con no en noonday;/wyb/coincide con ly en possibly yesterday./wBn/coincide con on en noonday, y/yBw/coincide con ye en possibly yesterday.Xes un caracter de control. Coincide con un caracter de control en una cadena. Por ejemplo,/cM/coincide con control-M en una cadena.[0-9]. Por ejemplo,/d/ o /[0-9]/coincide con 2 en B2 is the suite number.[^0-9]. Por ejemplo,/D/o/[^0-9]/coinciden con B en B2 is the suite number.[fnrtvu00A0u2028u2029]. Por ejemplo,/sw*/coincide con bar en foo bar.[^ fnrtvu00A0u2028u2029].Por ejemplo,/Sw*/coincide con foo en foo bar.[A-Za-z0-9_]. Por ejemplo,/w/coincide con a en apple, 5 en $5.28, y 3 en 3D.[^A-Za-z0-9_]. Por ejemplo,/W/o/[^$A-Za-z0-9_]/coincide con % en 50%.nes un entero positivo. Referencia a la última coincidencia del gruponde parentesis de la expresión regular (contando parentesis izquierdos). Por ejemplo,/apple(,)sorange1/coincide con apple, orange, en apple, orange, cherry, peach.Usar paréntesis
Los paréntesis que rodean cualquier parte de un patrón de expresión regular causan que la parte de la subcadena coincidente se recuerde. Una vez recordada, la subcadena puede ser llamada para otro uso.
Por ejemplo, el patrón
/Chapter (d+).d*/muestra caracteres especiales y caracteres adicionales de escape e indica que parte del patrón debe ser recordada. Coincide precisamente con los caracteres Chapter seguidos de uno o más caracteres numéricos (dsignifica cualquier caracter numérico y+significa 1 o más veces), seguidos por un punto decimal (el cual es un caracter especial: anteponeral punto decimal significa que el patrón debe buscar el caracter . literalmente), seguido por un caracter numérico 0 o más veces (dsignifica caracter numérico,*significa 0 o más veces). Además, los paréntesis se usan para recordar la primera ocurrencia de caracteres numéricos.Este patrón se encuentra en Open Chapter 4.3, paragraph 6 y 4 es recordado. El patrón no se encuentra en Chapter 3 y 4, porque esta cadena no tiene un . despues del 3.
Para coincidir una subcadena sin que la parte coincidente se recuerde, en los paréntesis comience el patrón con
?:. Por ejemplo,(?:d+)coincide con uno o más caracteres numéricos, pero no recuerda los caracteres coincidentes.Más información
Otros artículos de esta serie:
[seriesposts show_date=0 order=asc]