正则表达式以搜索特定的Twitter用户名

时间:2018-10-28 18:36:31

标签: python regex twitter

我有一个项目正在尝试分析推文数据库。我需要编写一个python regex表达式来提取涉及特定Twitter用户的推文。这是我要捕获的示例推文。

“那@A_Person真是个混蛋。”

我一直在尝试的正则表达式是

([^.?!]*)(\b([@]A_Person)\b)([^.?!]*)

但是它不起作用,我已经尝试了很多变体。任何意见,将不胜感激!

1 个答案:

答案 0 :(得分:2)

\b匹配单词边界,但是@不是单词字符,因此如果在空格后出现,则匹配将失败。尝试删除那里的单词边界,并删除多余的组,并在[.?!]的末尾添加一个字符集以包含最后的标点符号,您将得到:

[^.?!]*@A_Person\b.*?[^.?!]*[.?!]

您还可以考虑对字符串的开头或最后一句的结尾进行检查,否则引擎将通过 lot 步骤,同时遍历没有任何匹配项的区域。也许使用

(?:^|(?<=[.?!])\s*)

,它将与字符串的开头匹配,或者将在[.?!]之后向后寻找,可能后面跟空格。把它们放在一起,你会得到

(?:^|(?<=[.?!])\s*)([^.?!]*@A_Person\b.*?[^.?!]*[.?!])

您想要的字符串在第一组中的位置(没有前导空格)。

https://regex101.com/r/447KsF/3