我想從一個大字符串匹配一個字符串。在PHP的preg匹配抓住整個字符串?
例如
「敏捷的棕色狐狸是在這裏,但敏捷的棕色狐狸總是在那裏太」
preg_match('(quick brown fox(.+?)too)',$txt,$match)
的問題是,它抓住了整個句子,而不是「敏捷的棕色狐狸總是在那裏太」
如何抓住唯一的第二部分?..這種情況發生時,也有類似的串在一起在一行中左右...
我想從一個大字符串匹配一個字符串。在PHP的preg匹配抓住整個字符串?
例如
「敏捷的棕色狐狸是在這裏,但敏捷的棕色狐狸總是在那裏太」
preg_match('(quick brown fox(.+?)too)',$txt,$match)
的問題是,它抓住了整個句子,而不是「敏捷的棕色狐狸總是在那裏太」
如何抓住唯一的第二部分?..這種情況發生時,也有類似的串在一起在一行中左右...
你^ h大街2在這裏捕捉羣體。你$match
數組將包含..
[0] => quick brown fox is here but quick brown fox always over there too
[1] => quick brown fox is here but quick brown fox always over there too
[2] => is here but quick brown fox always over there
而且,你錯過了這兩個前鋒在您的正則斜槓。
非greedyness是在圖案年底僅適用於(實際上,這意味着,如果prce找到匹配,也不會去尋找一個更大的比賽,剛剛返回),所以:
「快速的棕色狐狸也在這裏,始終在那裏太」
preg_match('(quick brown fox(.+?)too)', $txt, $match)
將只匹配「敏捷的棕色狐狸也在這裏」 - 但沒有,你在找什麼。
也許你可以扭轉你的$ txt與strrev()
&寫一個顛倒的模式,而不是顛倒你的匹配,但它只會解決這個具體問題。
該代碼返回整個句子,而不是最後一個匹配的部分..我試圖確切的第二部分..以某種方式忽略第一場比賽 –
是的,但你幾乎可以使用任何你想要的修飾符。 –
實際上,周圍的'()'作爲分隔符,它們不是一個捕獲組。 – deceze
@F.Müller不,'+?'是* +的非貪婪*版本。 – deceze