我尝试使用正则表达式(php)来匹配结尾的罗马数字。为简单起见,请考虑以下示例:$str="Olympic III";preg_match("#^(.*)(III|II|I)$#",$str,$rep);print_r($rep);那只会匹配一个“I”。正确的答案是我使用不贪婪的“U”修饰符。但为什么?正则表达式不使用我提供的顺序(在尝试“II”或“I”之前先尝试“III”)?
3 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
尝试这个:
$str="Olympic III";
preg_match("#^(.*)\s(I+)$#",$str,$rep);
print_r($rep);
\sbefore (I+)or(III|II|I)匹配单个空格,它解决了您的问题,因为它强制正则表达式(.*)仅匹配有趣部分的开头。
- 3 回答
- 0 关注
- 432 浏览
添加回答
举报
0/150
提交
取消
