我想捕获一个模式,但不包括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
Run Code Online (Sandbox Code Playgroud)
因此,在上述情况下,EFG
捕获字符串的第一个实例之前的任何内容.另外,如果EFG
字符串不存在,那么我想捕获整个字符串.
我本以为会有以下工作,但没有这样的运气:
$pattern = '/(.*)(?:EFG)?/';
preg_match($pattern, 'Q$TQ@#%GEFGw35hqb', $matches);
print_r($matches);
//should give: 'Q$TQ@#%G'
Run Code Online (Sandbox Code Playgroud)