Las expresiones regulares comúnmente conocidas como expresiones regulares (regex) son una secuencia de caracteres que describen un patrón de búsqueda especial en forma de string de texto. Se utilizan básicamente en la programación de algoritmos mundiales para hacer coincidir algunos patrones vagamente definidos para lograr algunas tareas relevantes. Algunas veces, las expresiones regulares se entienden como un minilenguaje de programación con una notación de patrón que permite a los usuarios analizar strings de texto. La secuencia exacta de caracteres es impredecible de antemano, por lo que la expresión regular ayuda a obtener las strings requeridas en función de una definición de patrón.
La expresión regular es una forma compacta de describir un patrón de string que coincide con una cantidad particular de texto. Como sabe, PHP es un lenguaje de código abierto que se usa comúnmente para la creación de sitios web, proporciona funciones de expresión regular como una herramienta importante. Al igual que PHP, muchos otros lenguajes de programación tienen su propia implementación de expresiones regulares. Esto es lo mismo con otras aplicaciones también, que tienen su propio soporte de expresiones regulares que tienen varias sintaxis. Muchos lenguajes y herramientas modernos disponibles aplican expresiones regulares en strings y archivos muy grandes. Veamos algunas de las ventajas y usos de las expresiones regulares en nuestras aplicaciones.
Ventajas y usos de las expresiones regulares:
en muchos escenarios, los desarrolladores enfrentan problemas cada vez que se recopilan datos en campos de texto libre, ya que la mayor parte de la programación se ocupa de las entradas de datos. Las expresiones regulares se usan casi en todas partes en la programación de aplicaciones actual.
- Las expresiones regulares ayudan en la validación de strings de texto que son de interés para el programador.
- Ofrece una poderosa herramienta para analizar, buscar un patrón y modificar los datos de texto.
- Ayuda a buscar un patrón de string específico y a extraer resultados coincidentes de manera flexible.
- Ayuda a analizar archivos de texto en busca de una secuencia definida de caracteres para su posterior análisis o manipulación de datos.
- Con la ayuda de las funciones incorporadas de expresiones regulares, se proporcionan soluciones fáciles y simples para identificar patrones.
- Ahorra efectivamente mucho tiempo de desarrollo, que está en busca de un patrón de string específico.
- Ayuda en las validaciones de información importante del usuario, como la dirección de correo electrónico, los números de teléfono y la dirección IP.
- Ayuda a resaltar palabras clave especiales en un archivo según el resultado de la búsqueda o la entrada.
- Ayuda a identificar etiquetas de plantilla específicas y reemplazar esos datos con los datos reales según el requisito.
- Regexes son muy útiles para la creación de etiquetas de reconocimiento de sistema de plantillas HTML.
- Las expresiones regulares se utilizan principalmente para la detección del navegador, la filtración de correo no deseado, la verificación de la seguridad de la contraseña y la validación de formularios.
No podemos cubrir todo en este tema, pero veamos algunos de los principales conceptos de expresiones regulares. La siguiente tabla muestra algunas expresiones regulares y la string correspondiente que coincide con el patrón de expresión regular.
Expresión regular | Partidos |
---|---|
frikis | La string «geeks» |
^ frikis | La string que comienza con «geeks» |
frikis$ | La string que tiene «geeks» al final. |
^geeks$ | La string donde «geeks» está solo en una string. |
[a B C] | a, b o c |
[Arizona] | Cualquier letra minúscula |
[^AZ] | Cualquier letra que NO sea una letra mayúscula |
(gif|png) | Ya sea «gif» o «png» |
[az]+ | Una o más letras minúsculas |
^[a-zA-Z0-9]{1, }$ | Cualquier palabra con al menos un número o una letra |
([hacha])([por]) | ab, ay, xb, xy |
[^A-Za-z0-9] | Cualquier símbolo que no sea una letra o un número |
([AZ]{3}|[0-9]{5}) | Coincide con tres letras o cinco números |
Nota: Se pueden crear patrones de búsqueda complejos aplicando algunas reglas básicas de expresiones regulares. Incluso muchos operadores aritméticos como +, ^, – son usados por expresiones regulares para crear pequeños patrones complejos.
Operadores en Expresiones Regulares: Veamos algunos de los operadores en las expresiones regulares de PHP.
Operador | Descripción |
---|---|
^ | Denota el comienzo de la string. |
ps | Denota el final de la string. |
. | Denota casi cualquier carácter único. |
() | Denota un grupo de expresiones. |
[] | Encuentra un rango de caracteres, por ejemplo [xyz] significa x, y o z. |
[^] | Encuentra los elementos que no están dentro del rango, por ejemplo [^abc] significa NO a, b o c. |
– (estrellarse) | Encuentra el rango de caracteres dentro del rango de elementos dado, por ejemplo, [az] significa de la a a la z. |
| (tubo) | Es el OR lógico por ejemplo x | y significa x O y. |
? | Denota cero o uno del carácter precedente o rango de elementos. |
* | Denota cero o más caracteres anteriores o rango de elementos. |
+ | Denota uno o más caracteres anteriores o rango de elementos. |
{norte} | Denota exactamente n veces el carácter anterior o el rango de elementos, por ejemplo, n{2}. |
{n,} | Indica al menos n veces el carácter anterior o el rango de elementos, por ejemplo, n{2, }. |
{n, m} | Denota al menos n pero no más de m veces, por ejemplo, n{2, 4} significa 2 a 4 de n. |
\ | Denota el carácter de escape. |
Clases de caracteres especiales en expresiones regulares: veamos algunos de los caracteres especiales que se usan en las expresiones regulares.
Personaje especial | Sentido |
---|---|
\norte | Denota una nueva línea. |
\r | Denota un retorno de carro. |
\t | Denota una pestaña. |
\v | Denota una pestaña vertical. |
\F | Denota un avance de formulario. |
\xxx | Denota carácter octal xxx. |
\xhh | Denota el carácter hexadecimal hh. |
Conjuntos de caracteres abreviados: Veamos algunos conjuntos de caracteres abreviados disponibles.
Taquigrafía | Sentido |
---|---|
\s | Coincide con caracteres de espacio como espacio, nueva línea o tabulación. |
\d | Coincide con cualquier dígito del 0 al 9. |
\w | Coincide con caracteres de palabras, incluidas todas las letras mayúsculas y minúsculas, dígitos y guiones bajos. |
Funciones predefinidas o biblioteca Regex: echemos un vistazo a la hoja de referencia rápida de funciones predefinidas para expresiones regulares en PHP. PHP proporciona a los programadores muchas funciones útiles para trabajar con expresiones regulares.
Las funciones integradas enumeradas a continuación distinguen entre mayúsculas y minúsculas.
Función | Definición |
---|---|
coincidencia_preg() | Esta función busca un patrón específico en alguna string. Devuelve verdadero si el patrón existe y falso en caso contrario. |
preg_match_all() | Esta función busca todas las ocurrencias del patrón de string contra la string. Esta función es muy útil para buscar y reemplazar. |
ereg_replace() | Esta función busca un patrón de string específico y reemplaza la string original con la string de reemplazo, si la encuentra. |
eregi_replace() | La función se comporta como ereg_replace() siempre que la búsqueda de patrones no distinga entre mayúsculas y minúsculas. |
preg_replace() | Esta función se comporta como la función ereg_replace() siempre que las expresiones regulares se puedan usar en el patrón y las strings de reemplazo. |
preg_split() | La función se comporta como la función PHP split(). Divide la string por expresiones regulares como sus parámetros. |
preg_grep() | Esta función busca todos los elementos que coincidan con el patrón de expresión regular y devuelve la array de salida. |
preg_quote() | Esta función toma strings y comillas delante de cada carácter que coincide con la expresión regular. |
ereg() | Esta función busca una string especificada por un patrón y devuelve verdadero si la encuentra; de lo contrario, devuelve falso. |
eregi() | Esta función se comporta como la función ereg() siempre que la búsqueda no distinga entre mayúsculas y minúsculas. |
Nota:
- De forma predeterminada, las expresiones regulares distinguen entre mayúsculas y minúsculas.
- Hay una diferencia entre strings dentro de comillas simples y strings dentro de comillas dobles en PHP. Las primeras se tratan literalmente, mientras que las strings entre comillas dobles significan que el contenido de la variable se imprime en lugar de solo imprimir sus nombres.
Ejemplo 1:
<?php // Declare a regular expression $regex = '/^[a-zA-Z ]*$/'; // Declare a string $nameString = 'Sharukh khan'; // Use preg_match() function to // search string pattern if(preg_match($regex, $nameString)) { echo("Name string matching with" . " regular expression"); } else { echo("Only letters and white space" . " allowed in name string"); } ?>
Producción:
Name string matching with regular expression
Ejemplo 2:
<?php // Declare a regular expression $regex = "/<b>(.*)<\/b>/U"; // Declare a string $inputString = "Name: <b>John</b> Position: <b>Developer</b>"; // Use preg_match_all() function to perform // a global regular expression match preg_match_all($regex, $inputString, $output); echo $output[0][0]." <br> ".$output[0][1]."\n"; ?>
Producción:
John Developer
Ejemplo 3:
<?php // Declare a regular expression $regex = "([0-9]+)"; // Declare a string $original = "Completed graduation in 2004"; $replaceWith = "2002"; // Use ereg_replace() function to search a // string pattern in an other string $original = ereg_replace($regex, $replaceWith, $original); // Display result echo $original; ?>
Producción:
Completed graduation in 2002
Ejemplo 4:
<?php <?php // Declare a string $ip = "134.645.478.670"; // Declare a regular expression $regex = "/\./"; // Use preg_split() function to // convert a given string into // an array $output = preg_split ($regex, $ip); echo "$output[0] <br>"; echo "$output[1] <br>"; echo "$output[2] <br>"; echo "$output[3] <br>"; ?>
Producción:
134 645 478 670
Metacaracteres: Hay dos tipos de caracteres que se utilizan en las expresiones regulares: Caracteres regulares y Metacaracteres. Los caracteres regulares son aquellos caracteres que tienen un significado ‘literal’ y los metacaracteres son aquellos caracteres que tienen un significado ‘especial’ en una expresión regular.
Metacarácter | Descripción | Ejemplo |
---|---|---|
. | Coincide con cualquier carácter único que no sea una nueva línea. | /./ coincide con una string que tiene un solo carácter. |
^ | Coincide con el comienzo de la string. | /^geeks/ coincide con cualquier string que comience con geeks. |
ps | Coincide con el patrón de cuerda al final de la cuerda. | /com$/ coincide con la string que termina en com, por ejemplo, google.com, etc. |
* | Coincide con cero o más caracteres. | /com*/ coincide con viaje diario, computadora, compromiso, etc. |
+ | Coincide con el carácter anterior que aparece al menos una vez. | Por ejemplo, /z+oom/ coincide con zoom. |
\ | Se utiliza para escapar metacaracteres en expresiones regulares. | /google\.com/ tratará el punto como un valor literal, no como un metacarácter. |
Arizona | Coincide con letras minúsculas. | frikis |
Arizona | Coincide con letras mayúsculas. | GEEKS |
0-9 | Coincide con cualquier número entre 0 y 9. | /0-5/ coincide con 0, 1, 2, 3, 4, 5 |
[…] | Coincide con la clase de personaje. | /[pqr]/ coincide con pqr |
Otros ejemplos:
Expresión regular | Sentido |
---|---|
^[.-a-z0-9A-Z] | Hace coincidir strings con puntos, guiones y cualquier letra minúscula, números entre 0 y 9 y letras mayúsculas. |
+@[a-z0-9A-Z] | Coincide con la string con el símbolo @ al principio seguido de cualquier letra minúscula, números entre 0 y 9 y letras mayúsculas. |
+\.[az]{2, 6}$/ | Escapa del punto y luego hace coincidir la string con cualquier letra minúscula con una longitud de string entre 2 y 6 al final. |
Nota:
- Los metacaracteres son muy poderosos en las soluciones de coincidencia de patrones de expresiones regulares. Maneja una gran cantidad de procesamiento de patrones complejos.
- Cada personaje que no es un metacarácter es definitivamente un personaje regular.
- Cada carácter regular coincide con el mismo carácter por sí mismo.
Expresiones regulares POSIX: Algunas expresiones regulares en PHP son como expresiones aritméticas que se llaman expresiones regulares POSIX. Algunas veces, las expresiones complejas se crean combinando varios elementos u operadores en expresiones regulares. La expresión regular muy básica es la que coincide con un solo carácter.
Veamos algunas de las expresiones regulares POSIX.
expresión regular | Sentido |
---|---|
[0-9] | Coincide con los dígitos del 0 al 9. |
[Arizona] | Coincide con cualquier letra minúscula de la a a la z. |
[ARIZONA] | Coincide con cualquier letra mayúscula de la A a la Z. |
[Arizona] | Coincide con cualquier letra a minúscula hasta la letra Z mayúscula. |
[:más bajo:] | Coincide con cualquier letra minúscula. |
[:superior:] | Coincide con cualquier letra mayúscula. |
[:alfa:] | Coincide con todos los caracteres alfabéticos o letras de az y AZ. |
[[:alfa:]] | Coincide con cualquier string que contenga caracteres alfabéticos o letras. |
[:alnum:] | Coincide con todos los caracteres alfanuméricos, es decir, todos los dígitos (0-9) y letras (az AZ). |
[[:alnum:]] | Coincide con cualquier string que contenga caracteres alfanuméricos y dígitos. |
[:dígito:] | Coincide con todos los dígitos del 0 al 9. |
[[:dígito:]] | Coincide con cualquier string que contenga dígitos del 0 al 9. |
[:xdigit:] | Coincide con todos los dígitos hexadecimales. |
[:punto:] | Coincide con todos los símbolos de puntuación. |
[:vacío:] | Coincide con caracteres en blanco como espacio y tabulación. |
[:espacio:] | Coincide con todos los caracteres de espacio en blanco como los saltos de línea. |
[[:espacio:]] | Coincide con cualquier string que contenga un espacio. |
[:control:] | Coincide con todos los caracteres de control. |
[:grafico:] | Coincide con todos los caracteres visibles o impresos que no sean espacios ni caracteres de control. |
[:impresión:] | Coincide con todos los caracteres y espacios impresos que no sean caracteres de control. |
[:palabra:] | Coincide con todos los caracteres de palabras como dígitos, letras y guiones bajos. |
Cuantificadores en expresiones regulares: los cuantificadores son caracteres especiales que indican la cantidad, la frecuencia o el número de instancias o ocurrencias de un carácter o grupo de caracteres entre paréntesis. También se les llama expresiones codiciosas y perezosas. Veamos algunos de los conceptos y ejemplos de cuantificadores.
cuantificador | Sentido |
---|---|
un+ | Coincide con la string que contiene al menos una a. |
a* | Coincide con la string que contiene cero o más a. |
¿a? | Coincide con cualquier string que contenga cero o una a. |
hacha} | Coincide con la letra ‘a’ exactamente x veces. |
un{2, 3} | Coincide con cualquier string que contenga la aparición de dos o tres a. |
un{2, } | Coincide con cualquier string que contenga la aparición de al menos dos a. |
un{2} | Coincide con cualquier string que contenga exactamente dos a. |
a{, y} | Coincide con cualquier string que contenga la aparición de no más de y número de a. |
un $ | Coincide con cualquier string con ‘a’ al final. |
^ un | Coincide con cualquier string con ‘a’ al principio. |
[^a-zA-Z] | Coincide con cualquier patrón de string que no tenga caracteres de la a a la z y de la A a la Z. |
Automóvil club británico | Coincide con cualquier patrón de string que contenga una, luego cualquier carácter y luego otra a. |
^.{3}$ | Coincide con cualquier string que tenga exactamente tres caracteres. |
Nota:
- El carácter $dentro de la expresión coincidirá con el final de la string de destino.
- Los símbolos *, ?, + en una expresión regular indican la frecuencia de aparición de un carácter. Si ocurre cero o más veces, cero o una vez y una o más veces.
- El carácter ^ dentro de la expresión coincidirá con el comienzo de la string de destino.
- Los . metacharacter coincide con cualquier carácter único que no sea la nueva línea.
Motores de expresiones regulares comúnmente conocidos:
- expresión regular
- RegexBuddy
Conclusión: una expresión regular es un patrón que describe una string de texto en un patrón particular o se define como un algoritmo de coincidencia de patrones expresado en una sola línea. Las expresiones regulares son muy útiles en el mundo de la programación para realizar comprobaciones de validación y reconocer plantillas específicas. PHP proporciona muchas funciones integradas que admiten expresiones regulares. Los metacaracteres ayudan a crear patrones complejos.
Publicación traducida automáticamente
Artículo escrito por geetanjali16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA