在正则表达式上抓取一块返回的匹配项(PHP)

时间:2012-05-15 16:32:41

标签: php regex

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

我正在使用Twitter提要,我可以访问推文,但是当我想在我的网站上显示这些推文时 - 链接,@回复和哈希标记都是取消关联的。所以我开始将它们联系起来。我正在回复@回复并提出一个问题:

这是我的正则表达式:

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

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

所以这将返回'@jason',但我想知道是否有办法用@搜索它,但只返回它后面的内容 - 只是'jason'。如何使用正则表达式执行此操作?

3 个答案:

答案 0 :(得分:0)

正如Double提到的,$ matches [1]会给你想要的。 $ matches [0]很特殊,它包含整个匹配字符串。列表中的后续项目是捕获的组。

答案 1 :(得分:0)

从它出现的documentation $matches[1]将有第一个反向引用,在你的情况下应该是jason。你可以在这里测试:http://www.solmetra.com/scripts/regex/index.php

答案 2 :(得分:0)

Read the #$^&* Manual我的意思是...... RIGHT 那里......

  

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

Picture is worth a thousand words