No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Expresiones Regulares

Curso de Expresiones Regulares

Alberto Alcocer (Beco)

Alberto Alcocer (Beco)

PHP

23/29
Recursos

¿Cómo usar expresiones regulares en PHP?

PHP sigue siendo un lenguaje muy utilizado en la web moderna, y aunque no sea el favorito de todos, su capacidad para manejar expresiones regulares es impresionante y ampliamente funcional. Aprender a utilizar estas funciones en PHP puede hacer que la manipulación de textos sea más precisa y más rápida. Aquí vamos a explorar cómo manejar expresiones regulares con PHP, partiendo de la lectura de un archivo CSV.

¿Cómo leer un archivo en PHP?

Para empezar a trabajar con expresiones regulares en PHP, primero debemos leer un archivo. Supongamos que tenemos un archivo llamado results.csv.

<?php
$file = fopen('files/results.csv', 'r');
while (!feof($file)) {
    $line = fgets($file);
    echo $line;
}
fclose($file);
?>

Este código abre el archivo para su lectura y recorre cada línea imprimiéndola en la pantalla. Es un paso esencial antes de aplicar cualquier procesamiento de texto, como el uso de expresiones regulares.

¿Cómo usar preg_match en PHP?

El siguiente paso es utilizar la función preg_match de PHP, que permite buscar coincidencias en una cadena de texto utilizando una expresión regular. Esta función devuelve un valor booleano: true si hay una coincidencia y false si no la hay.

<?php
$pattern = '/^2018-\d{2}-\d{2}/';
if (preg_match($pattern, $line, $matches)) {
    print_r($matches);
}
?>

En este ejemplo, buscamos líneas que comiencen con la fecha en el formato YYYY-MM-DD del año 2018. La expresión regular ^2018-\d{2}-\d{2} busca específicamente estas fechas, donde \d es un dígito y {2} indica dos dígitos consecutivos.

¿Cómo mejorar la precisión de las expresiones?

Al trabajar con expresiones regulares, a veces es necesario hacerlas más estrictas o más flexibles. Podemos utilizar metacaracteres como .* que permiten cualquier carácter en cualquier cantidad para ser más inclusivos.

Imagina que quieres buscar todos los juegos de enero de 2018:

<?php
$pattern = '/^2018-01-\d{2},/';
if (preg_match($pattern, $line, $matches)) {
    $day = $matches[1]; // Suponiendo que se agrupa el día
    echo "Día del partido: $day\n";
}
?>

Este ejemplo busca líneas que comiencen con fechas específicas de enero de 2018 y, si encuentra una coincidencia, imprime el día específico del partido.

¿Qué detalles considerar al diseñar una expresión regular?

  • Escapado de caracteres: Asegúrate de escapar los caracteres especiales como los guiones - o los puntos . para que sean interpretados literalmente cuando sea necesario.
  • Comillas: Es importante saber usar comillas simples para contener expresiones regulares porque evitan la necesidad de escapar ciertos caracteres adicionales.
  • Agrupaciones: Utiliza paréntesis para crear grupos en tu expresión regular cuando necesites extraer partes específicas de la cadena de texto.

Evaluación de coincidencias y estadísticas

Al finalizar el procesamiento, podemos evaluar cuántas coincidencias se encontraron y cuántas no:

<?php
$matchCount = 0;
$noMatchCount = 0;

if (preg_match($pattern, $line)) {
    $matchCount++;
} else {
    $noMatchCount++;
}

printf("Matches: %d\nNo Matches: %d\n", $matchCount, $noMatchCount);
?>

Este tipo de evaluación es crucial para entender la eficacia de nuestras expresiones.

Conclusion

PHP ofrece herramientas poderosas para trabajar con expresiones regulares, permitiendo una búsqueda y manipulación de texto muy detallada y específica. Con práctica y atención a los detalles, puedes dominar la creación de expresiones regulares eficaces y eficientes. ¡Anímate a experimentar y fortalecer tus habilidades en este lenguaje y observa cómo tus proyectos ganan en robustez y funcionalidad!

Aportes 29

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

el live coding sí es deporte de alto riesgo

"Aceptando que no es uno de los mejores lenguajes del mundo"
Por favor, dejen que este caballero haga todos los cursos de programación.

  • Match para expresiones regulares en PHP:
preg_match( '/regex/',
		$line,
		$m)

donde:

  • regex: es la expresion regular.

  • $line: cadena de caracteres (cada línea del archivo).

  • $m: arreglo en donde cada match va a ir en cada uno de los lugares. En el script, este arreglo tiene dos elementos donde el elemento [0] es la cadena de caracteres de prueba y el elemento [1] es el grupo de caracteres que hace match.

  • Expresión regular para obtener partidos jugados en enero del 2018:

^2018\-01\-(\d\d),.*$

Código:

<?php
$file = fopen("../files/results.csv","r");

$match   = 0;
$nomatch = 0;

while(!feof($file)) {
    $line = fgets($file);
    if(preg_match(
        '/^2018\-01\-(\d\d),.*$/',
        $line,
        $m
      )
    ) {
        print_r($m); 
        $match++;
    } else {
        $nomatch++;
    }
}
fclose($file);

printf("\n\nmatch: %d\nnomatch: %d\n", $match, $nomatch);

“Esto de programar en vivo es un deporte de alto riesgo”.
Justo así me siento enfrente de mis alumnos

Por que PHP no es el mejor lenguaje del mundo??
Acaso existe el mejor lenguaje del mundo ??

Por si están utilizando alguna consola de Ubuntu, Linux o wsl en Windows pueden instalar php solo con este comando y ya pueden ejecutar el archivo.

sudo apt install php7.4-cli

En Windows para ejecutar un archivo php se puede utilizar XAMPP; lo instalan, inicializan el servidor Apache. El archivo *.php tiene que estar en la carpeta htdocs localizado dentro de la carpeta de instalación llamada xampp (por default en C:) y ya en el navegador colocan localhost/archivo.php.

Jajaja php pobrecito python se los trago

Para PHP:
Las expresiones regulares en PHP van entre comillas simples:

if(preg_match(
    '/^2018\-01\-(\d\d),.*$/',
    $line,
    $m
  )) {
    print_r($m);
    $match++;
  }

PHP fue mi primer lenguaje que permitio trabajar, Java el primero que me enseñaron en la universidad y Python el primero que me hizo ver que se puede aprender más. Amemos a los lengujaes no hagan bandos. Saludos.

Programar en vivo es un deporte de alto riesgo. 😄

Haha me encanta el “Ah, chingá”

<?php

$file = fopen("./results.csv", “r”);

$match = 0;
$nomatch = 0;

while(!feof($file)) {
$line = fgets($file);
if(preg_match(
’/^2018-01-(\d\d),.*$/’,
$line,
$m
)
) {
print_r($m);
$match++;
} else {
$nomatch++;
}
}
fclose($file);

printf("\n\nmatch: %d\nno match: %d\n", $match, $nomatch);

¡Qué gran maestro!

Muy bueno todo, gracias por la clase…
😃
aunque se notan los sesgos contra php del profe ja ja ja

Las \*\*expresiones regulares en PHP\*\* son una poderosa herramienta para buscar, validar y manipular texto mediante patrones. PHP admite dos tipos de sintaxis para las expresiones regulares: 1\. \*\*PCRE (Perl Compatible Regular Expressions)\*\*: Usan funciones como `preg\_match`, `preg\_replace`, etc. 2\. \*\*Posix\*\*: Aunque es más antigua y menos común, generalmente se recomienda usar PCRE por ser más potente. \### Funciones clave para trabajar con expresiones regulares en PHP: \#### 1. \*\*`preg\_match`\*\* Busca un patrón dentro de una cadena. ```php \ ``` \#### 2. \*\*`preg\_match\_all`\*\* Busca todas las coincidencias de un patrón. ```php \ ``` \#### 3. \*\*`preg\_replace`\*\* Reemplaza partes de una cadena que coinciden con un patrón. ```php \ ``` \#### 4. \*\*`preg\_split`\*\* Divide una cadena en un arreglo utilizando una expresión regular como delimitador. ```php \ uno \[1] => dos \[2] => tres \[3] => cuatro ) ?> ``` \### Ejemplos de patrones comunes en PHP: \#### 1. \*\*Validar un correo electrónico:\*\* ```php \ ``` \#### 2. \*\*Validar una URL:\*\* ```php \ ``` \#### 3. \*\*Validar un número de teléfono:\*\* ```php \ ``` \### Delimitadores y modificadores: \- \*\*Delimitadores\*\*: Las expresiones regulares en PHP se delimitan con caracteres como `/`. Por ejemplo, `/\d+/` busca dígitos. \- \*\*Modificadores\*\*: \- `i`: Ignora mayúsculas/minúsculas. \- `m`: Trata la cadena como multilínea. \- `s`: Permite que el `.` coincida con saltos de línea. \### Conclusión Las expresiones regulares en PHP son extremadamente útiles para validaciones y manipulaciones de texto. Utilizando funciones como `preg\_match`, `preg\_replace`, y `preg\_split`, puedes implementar filtros de datos complejos y realizar búsquedas avanzadas en tus aplicaciones.
creo que se me hizo mas facil entender Perl que Php

Es increible la forma de utilizar PHP para hacer el mismo proceso para obtener los valores de una terminal. La ruta para obtenerlos jamas imagine que seria la misma que perl. Para ser sincero, es la primera vez que veo PHP y me agrada la verdad. A seguir aprendiendo

Me hace sentir más confianza ver que es normal equivocarse incluso con profesores expertos, siento que me ayudará en las entrevistas técnicas, la clase excelente.

Luego de terminar la carrera de Fundamentos de Programación, probablemente siga con PHP ya que estoy viendo que lo recomiendan mucho para Backend…

😂🤣😂🤣😂

el objetivo no es aprender php pero con este ejemplo queda muy claro que las expresiones regulares se pueden usar con este lenguaje

Interesante

Interesante.

super

Genial.

PHP llora por sus comentarios…

Realmente de admirar todo lo que hace el profesor Alberto, agradecido, recordemos siempre que el programar en vivo es un deporte de alto riesgo.

Tampoco sé PHP, pero igual se ve bastante bonito escrito :3.