php中的preg_match抓住整个字符串?

时间:2012-10-22 10:48:35

标签: php preg-match

我正在尝试匹配大字符串中的字符串。

例如

“快速的棕色狐狸在这里,但快速的棕色狐狸总是在那里”

 preg_match('(quick brown fox(.+?)too)',$txt,$match)

问题是它抓住了整个句子,而不是“快速的棕色狐狸总是在那里”

我如何只抓住第二部分?...当一行中有相似的字符串在一起时会发生这种情况......

2 个答案:

答案 0 :(得分:1)

这里有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

另外,你在正则表达式中缺少两个正斜杠。

答案 1 :(得分:1)

非贪婪仅应用于模式的 end (实际上,这意味着,如果prce找到匹配项,不寻找更大的匹配项,只返回),所以:

“快速的棕色狐狸也在这里,也总是在那里”

preg_match('(quick brown fox(.+?)too)', $txt, $match)

只匹配“快速棕色狐狸也在这里” - 但没有,你正在寻找什么。

也许你可以用strrev()&转换你的$ txt。写一个反转的模式,而不是反转你的匹配,但它只会解决这个特定的问题。