Я хочу захватить шаблон до, но не включая первый экземпляр необязательного другого шаблона с preg_match, например:
ABCDEFGwTW$% | capture ABCD
@Q%HG@H%hg afdgwsa g weg#D DEFG | capture @Q%HG@H%hg afdgwsa g weg#D D
@Q%HDEFG@H%hg afdgwsa g weg#D DEFG | capture @Q%HD
Итак, в приведенном выше случае все, что находится до первого экземпляра шаблона строка EFG
захвачена. кроме того, если строка EFG
отсутствует, я хочу захватить всю строку.
Я мог бы подумать, что следующее сработает, но не повезло:
$pattern = '/(.*)(?:EFG)?/';
preg_match($pattern, 'Q$TQ@#%GEFGw35hqb', $matches);
print_r($matches);
//should give: 'Q$TQ@#%G'