我正在尝试找到正确的正则表达式来匹配Twitter上的所有RT场景(不能等到Twitter的新转发API)。 我看到它的方式,RT可以在Twitter返回的字符串的开头,中间或结尾。 所以,我需要在这个正则表达式的开头和结尾处添加一些东西:
([RR])([Tt的])
无论我尝试什么,我都无法匹配一个正则表达式中的所有场景。我试过了
[^ | \ S +]
匹配RT将出现在字符串开头或一个或多个空白字符之后的情况,但它对于字符串或RT的结尾不起作用。我试过了
[\ S + | $]
匹配RT出现在字符串末尾或者后面有一个或多个空格字符的情况,与'pre'相同 - 它不起作用。
有人可以解释我在这里做错了什么吗?任何帮助或建议将受到高度赞赏(一如既往:))
答案 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";