php中的preg match获取整个字符串?
我正在尝试从一个大字符串中匹配一个字符串 范例 “敏捷的棕色狐狸在这里,但敏捷的棕色狐狸也总是在那里” 问题是它抓住了整个句子,而不是“敏捷的棕色狐狸也总是在那里”php中的preg match获取整个字符串?,php,preg-match,Php,Preg Match,我正在尝试从一个大字符串中匹配一个字符串 范例 “敏捷的棕色狐狸在这里,但敏捷的棕色狐狸也总是在那里” 问题是它抓住了整个句子,而不是“敏捷的棕色狐狸也总是在那里” 如何只抓取第二部分?。当类似的字符串在一行左右时会发生这种情况…这里有两个捕获组。您的$match数组将包含 [0] => quick brown fox is here but quick brown fox always over there too [1] => quick brown fox is here bu
如何只抓取第二部分?。当类似的字符串在一行左右时会发生这种情况…这里有两个捕获组。您的
$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找到匹配项,不查找更大的匹配项,只返回),因此: “敏捷的棕色狐狸也在这里,而且总是在那里” 将只匹配“快速棕色狐狸也在这里”-但没有,你在寻找什么
也许你可以用strrev()写一个反转的模式来反转你的$txt,而不是反转你的匹配,但这只会解决这个特定的问题。实际上,周围的
()
充当分隔符,它们不是一个捕获组。@F.Müller不,+?
是+
的非贪婪版本。我不认为你可以使用()
,但理论上你可以使用(
或)
-但由于这些是保留的,可能不是。该代码返回整个句子,而不是最后匹配的部分。我正在尝试精确的第二部分。不知何故忽略第一个匹配
[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
preg_match('(quick brown fox(.+?)too)', $txt, $match)