我正在尝试正则表达式匹配,但结果却出乎意料。我做错了什么?
$text = "one two three?four five six?";
preg_match("~(.+?)(?:\?)?~", $text, $match);
print_r($match);
结果:
Array ( [0] => o [1] => o )
预期结果:
Array ( [0] => one two three? [1] => one two three )
答案 0 :(得分:0)
您需要删除非捕获组旁边的?
,这使得非捕获组成为可选组。由于?
是可选的,(.+?)
非贪婪模式应匹配并仅捕获第一个字符。
preg_match("~(.+?)\?~", $text, $match);