Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的preg match获取整个字符串?_Php_Preg Match - Fatal编程技术网

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)