【问题标题】:regex to extract mentions in Twitter正则表达式提取 Twitter 中的提及
【发布时间】:2017-05-13 21:11:18
【问题描述】:

我需要在 python 中编写一个正则表达式来从推文中提取提及。

我的尝试:

regex=re.compile(r"(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)")

它适用于像@mickey 这样的任何提及 然而,在像@mickey_mouse 这样带有下划线的提及中,它只提取@mickey。

如何修改正则表达式使其在这两种情况下都能正常工作?

谢谢

【问题讨论】:

标签: python regex


【解决方案1】:

像这样在最后一组中添加下划线:

(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)

Regex101 Demo

附带说明,Twitter Handle rules 允许您的用户名也以数字和下划线开头。因此,要提取 twitter 句柄,正则表达式可以很简单:@\w{1,15} (允许字符、数字和下划线,并包括 15 个字符的限制)。根据可能使用正则表达式的位置,将需要一些额外的前瞻/后瞻。

【讨论】:

    【解决方案2】:

    一个shorter version,包括来自@degant 的否定案例:

    (?<=@)\w+
    

    【讨论】:

    • (?i)\w 无用,无需转义@,OP 只想匹配@ 之后的alpha
    • 很好,谢谢,所以可以缩短这个时间。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2012-11-06
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多