1

我正在尝试从一个大字符串中匹配一个字符串。

例子

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

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

问题是它抓住了整个句子而不是“quick brown fox always over there too”

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

4

2 回答 2

1

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

“狐狸精也在这里,而且总是在那里”

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

只会匹配“quick brown fox is here too” - 但没有,你在找什么。

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

于 2012-10-22T11:01:23.797 回答
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

此外,您的正则表达式中缺少两个正斜杠。

于 2012-10-22T10:51:09.497 回答