Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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)上获取返回匹配的一部分_Php_Regex - Fatal编程技术网

在正则表达式(PHP)上获取返回匹配的一部分

在正则表达式(PHP)上获取返回匹配的一部分,php,regex,Php,Regex,我最近一直在学习正则表达式,我想知道这是否可能: 我正在推特订阅源中,我可以访问推特,但当我想在我的网站上显示这些推特链接时,@回复和散列标签都没有链接。所以我开始把它们联系起来。我在@repress上,有一个问题: 这是我的正则表达式: $content = '@jason is awesome.'; $reply = '/@(\w+)/'; if(preg_match($reply, $content, $matches)){ var_dump($matches[0]); } 所以它

我最近一直在学习正则表达式,我想知道这是否可能:

我正在推特订阅源中,我可以访问推特,但当我想在我的网站上显示这些推特链接时,@回复和散列标签都没有链接。所以我开始把它们联系起来。我在@repress上,有一个问题:

这是我的正则表达式:

$content = '@jason is awesome.';
$reply = '/@(\w+)/';

if(preg_match($reply, $content, $matches)){
  var_dump($matches[0]);
}

所以它将返回“@jason”,但我想知道是否有一种方法可以用@搜索它,但只返回它后面的内容-只返回“jason”。如何使用正则表达式实现这一点?

如前所述,$matches[1]将提供您想要的$matches[0]是特殊的,它包含整个匹配字符串。列表中的后续项是捕获的组。

从出现的
$matches[1]
将具有第一个反向引用,在您的情况下,该反向引用应为jason。你可以在这里测试:

我的意思是。。就在那里

如果提供了匹配项,则它将填充搜索结果。 $matches[0]将包含与完整模式匹配的文本, $matches[1]将包含与第一次捕获的文本匹配的文本 括号中的子模式,依此类推。


不错。你能给我解释一下这到底是怎么回事吗?它是否在matches数组的每个元素中存储组?(使用默认标志)-$matches[0]包含与所有正则表达式匹配的字符串-$matches[1]只包含第一个括号()-$matches[2]只包含第二个括号,等等。我不知道它是如何工作的。我一直以为它把比赛给甩了,这就是你得到的。这将对我非常有益。谢谢