我嘗試使用正則表達式(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 關注
- 428 瀏覽
添加回答
舉報
0/150
提交
取消
