Quiero capturar un patrón hasta, pero sin incluir la primera instancia de un otro patrón opcional con preg_match, por ejemplo:expresión regular para capturar todo antes de la primera cadena opcional
ABCDEFGwTW$% | capture ABCD
@Q%[email protected]%hg afdgwsa g weg#D DEFG | capture @Q%[email protected]%hg afdgwsa g weg#D D
@Q%[email protected]%hg afdgwsa g weg#D DEFG | capture @Q%HD
Así que en el caso anterior nada antes de la primera Se captura la instancia de la cadena EFG
. Además, si la cadena EFG
no está presente, entonces quiero capturar toda la cadena.
yo habría pensado que el siguiente iba a funcionar, pero no hubo suerte:
$pattern = '/(.*)(?:EFG)?/';
preg_match($pattern, '[email protected]#%GEFGw35hqb', $matches);
print_r($matches);
//should give: '[email protected]#%G'
ah muy bien - no pensé en hacer coincidir el EFG o el final de la línea :) – mulllhausen
'/ (. *?) (?: des | $) /' también funciona :) – mulllhausen