试图用正则表达式和PHP找到Twitter RT

时间:2009-09-22 18:48:37

标签: php regex twitter preg-match

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

  

([RR])([Tt的])

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

  

[^ | \ S +]

匹配RT​​将出现在字符串开头或一个或多个空白字符之后的情况,但它对于字符串或RT的结尾不起作用。我试过了

  

[\ S + | $]

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

有人可以解释我在这里做错了什么吗?任何帮助或建议将受到高度赞赏(一如既往:))

2 个答案:

答案 0 :(得分:7)

你可能最喜欢这样的事情:

/\brt\b/i

哪个会找到RT的隔离实例(也就是用词边界包围),并使用正则表达式末尾的/i修饰符使其不区分大小写。

你想要单词边界,这样你最终不会想到包含像“Art”和“Quartz”这样的单词的随机推文实际上是转推。即便如此,它也会产生误报。

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

答案 1 :(得分:3)

if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";