typestar

Regex con preg_match en PHP

Extraer campos estructurados de una línea de log con PCRE.

<?php
$log = "2026-08-02 14:03 GET /api/users 200";

if (preg_match('/^(\d{4})-(\d{2})-(\d{2})/', $log, $m)) {
    echo "year $m[1], month $m[2]\n";
}

// named capture groups read better than indexes
$pattern = '/(?<verb>GET|POST) (?<path>\S+) (?<status>\d{3})/';
if (preg_match($pattern, $log, $hit)) {
    echo "$hit[verb] $hit[path] -> $hit[status]\n";
}

echo preg_match_all('/\d+/', $log, $nums), " number runs\n";

Cómo funciona

  1. preg_match llena $m con la coincidencia completa y una entrada por grupo.
  2. (?<verb>...) nombra un grupo, así $hit[verb] le gana a contar paréntesis.
  3. preg_match_all devuelve cuántas veces coincidió el patrón.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
412
Tokens
68
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 63 segundos.

Escribe este fragmento

Paso 3 de 3 en Cadenas y regex; paso 15 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →