Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
ejemplo.php
Tab = 4 espacios
1
<?php
$informe = <<<TEXTO
Transacciones del día:
- Cobro de suscripción: $149.00 facturado con éxito.
- Reembolso de garantía: EUR 45.00 acreditado.
- Bono promocional: $500.00 aplicado a cuenta.
- Identificador de registro interno: #149 no es un precio.
TEXTO;

// 1. Lookbehind Positivo: busca números decimales precedidos exactamente por '$'
// El signo '$' se evalúa pero NO forma parte del resultado capturado
$patronPreciosUSD = '/(?<=\$)\d+(?:\.\d{2})?/';

// 2. Lookahead Positivo: busca palabras que terminen antes de "facturado"
$patronEstado = '/\b[a-zA-Záéíóúñ]+\b(?=\s+facturado)/iu';

echo "<div style='font-family:system-ui; max-width:640px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>👁️ Aserciones Lookaround en Acción</h3>";

// Extracción 1
preg_match_all($patronPreciosUSD, $informe, $precios);
echo "<div style='background:#ecfdf5; border:1px solid #10b981; border-radius:8px; padding:12px; margin-bottom:12px;'>";
echo "  <strong style='color:#065f46;'>1. Precios en USD extraídos con Lookbehind (?&lt;=\\$):</strong><br>";
echo "  <span style='color:#64748b; font-size:12px;'>Extrae el valor numérico puro sin el símbolo de moneda:</span>";
echo "  <div style='margin-top:6px;'>";
foreach ($precios[0] as $precio) {
    echo "    <span style='background:#ffffff; color:#047857; font-family:monospace; font-weight:bold; padding:3px 8px; border-radius:4px; margin-right:6px;'>$precio</span>";
}
echo "  </div>";
echo "</div>";

// Extracción 2
preg_match($patronEstado, $informe, $accion);
echo "<div style='background:#f0f9ff; border:1px solid #0284c7; border-radius:8px; padding:12px;'>";
echo "  <strong style='color:#0369a1;'>2. Acción previa con Lookahead (?=\\s+facturado):</strong><br>";
echo "  <span style='color:#64748b; font-size:12px;'>Palabra inmediatamente anterior a 'facturado':</span><br>";
echo "  <code style='background:#ffffff; color:#0284c7; font-weight:bold; padding:4px 8px; border-radius:4px; display:inline-block; margin-top:4px;'>" . ($accion[0] ?? 'No encontrado') . "</code>";
echo "</div>";

echo "</div>";
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3