在正则表达式(PHP)上获取返回匹配的一部分
我最近一直在学习正则表达式,我想知道这是否可能: 我正在推特订阅源中,我可以访问推特,但当我想在我的网站上显示这些推特链接时,@回复和散列标签都没有链接。所以我开始把它们联系起来。我在@repress上,有一个问题: 这是我的正则表达式:在正则表达式(PHP)上获取返回匹配的一部分,php,regex,Php,Regex,我最近一直在学习正则表达式,我想知道这是否可能: 我正在推特订阅源中,我可以访问推特,但当我想在我的网站上显示这些推特链接时,@回复和散列标签都没有链接。所以我开始把它们联系起来。我在@repress上,有一个问题: 这是我的正则表达式: $content = '@jason is awesome.'; $reply = '/@(\w+)/'; if(preg_match($reply, $content, $matches)){ var_dump($matches[0]); } 所以它
$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]只包含第二个括号,等等。我不知道它是如何工作的。我一直以为它把比赛给甩了,这就是你得到的。这将对我非常有益。谢谢