1

我正在尝试找到正确的正则表达式来匹配 Twitter 上的所有 RT 场景(等不及 Twitter 的新转推 API)。在我看来,RT 可以位于从 Twitter 返回的字符串的开头、中间或结尾。所以,我在这个正则表达式的开头和结尾需要一些东西:

([Rr])([Tt])

无论我尝试什么,我都无法在一个正则表达式中匹配所有场景。
我试过了

[^|\s+]

以匹配 RT 将出现在字符串开头或一个或多个空格字符之后的场景,但对于字符串或 RT 的结尾却不一样。
我试过了

[\s+|$]

匹配 RT 出现在字符串末尾或后面有一个或多个空格字符的情况,与 'pre' 相同 - 它不起作用。

有人可以解释一下我在这里做错了什么吗?任何帮助或建议将不胜感激(一如既往:))

4

2 回答 2

7

您可能会对以下内容最满意:

/\brt\b/i

它将找到RT(即被单词边界包围)的孤立实例,并/i在正则表达式末尾使用修饰符使其不区分大小写。

您需要单词边界,以免最终认为包含“Art”和“Quartz”等单词的随机推文实际上是转推。即使那样,它也会有误报。

默认情况下,正则表达式可以(并且将)匹配字符串中的任何位置,因此如果您确实不在乎它是什么或它是否存在,则无需考虑匹配之前或之后的内容。

于 2009-09-22T18:53:55.180 回答
3
if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
于 2009-09-22T18:58:23.383 回答