Twitter用户名的正则表达式

Jua*_*nti 42 python regex twitter

你能提供一个与Twitter用户名匹配的正则表达式吗?

如果提供Python示例,则额外奖励.

Ang*_*.47 72

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

我用过这个,因为它忽略了电子邮件.

这是一个示例推文:

@Hello @you怎么做@my_friend,发邮件@ 000 me @ whats.up@example.com @shahmirj

火柴:

  • @你好
  • @您
  • @我的朋友
  • @shahmirj

它也适用于hashtags,我使用与@更改为相同的表达式#.

  • 那么,下划线可以在用户名的开头:(?<= ^ |(?<= [^ a-zA-Z0-9 - \.]))#([A-Za-z _] + [ A-ZA-Z0-9 _] +) (10认同)
  • 很好!只有一个更正:hastags和screenNames可以同时具有下划线.我添加它,所以这样得到的正则表达式是:(?<= ^ |(?<= [^ a-zA-Z0-9 -_ \.]))#([A-Za-z] + [A-ZA-Z0-9 -_] +) (9认同)
  • 试试`(?<= ^ |(?<= [^ a-zA-Z0-9 -_ \.]))@([A-Za-z] + [A-Za-z0-9 _] +)` (2认同)

ick*_*fay 19

如果您正在谈论@username他们在Twitter上使用的东西,那么您可以使用:

import re
twitter_username_re = re.compile(r'@([A-Za-z0-9_]+)')
Run Code Online (Sandbox Code Playgroud)

要使每个实例都成为HTML链接,您可以执行以下操作:

my_html_str = twitter_username_re.sub(lambda m: '<a href="http://twitter.com/%s">%s</a>' % (m.group(1), m.group(0)), my_tweet)
Run Code Online (Sandbox Code Playgroud)

  • 捕获电子邮件地址.使用正则表达式(?<= ^ |(?<= [^ a-zA-Z0-9 -_ \\.]))@([A-Za-z] + [A-Za-z0-9 _] +)来自Angel.King.47. (2认同)

ray*_*nco 18

我使用的正则表达式,已经在多个上下文中测试过:

/(^|[^@\w])@(\w{1,15})\b/
Run Code Online (Sandbox Code Playgroud)

这是我发现在字符串中测试和替换Twitter用户名的最简洁方法.

#!/usr/bin/python

import re

text = "@RayFranco is answering to @jjconti, this is a real '@username83' but this is an@email.com, and this is a @probablyfaketwitterusername";

ftext = re.sub( r'(^|[^@\w])@(\w{1,15})\b', '\\1<a href="http://twitter.com/\\2">\\2</a>', text )

print ftext;
Run Code Online (Sandbox Code Playgroud)

这将按预期返回给我:

<a href="http://twitter.com/RayFranco">RayFranco</a> is answering to <a href="http://twitter.com/jjconti">jjconti</a>, this is a real '<a href="http://twitter.com/username83">username83</a>' but this is an@email.com, and this is a @probablyfaketwitterusername
Run Code Online (Sandbox Code Playgroud)

根据Twitter规格:

您的用户名不能超过15个字符.您的真实姓名可以更长(20个字符),但为了方便起见,用户名会更短.如上所述,用户名只能包含字母数字字符(字母AZ,数字0-9),但下划线除外.检查以确保所需的用户名不包含任何符号,短划线或空格.

  • 最干净的.很好的发布规范. (2认同)
  • 谢谢,这太好了!...除了它错误地匹配中间URL中的用户名,例如https://medium.com/@p5d12000/xyz.这是一个修改版本,修复了:`(^ | [^\w @/\!?=&])@(\ w {1,15})\ b`.(推特本身仍然更好 - 它正确地自动链接`/ @ abc`中的@ -mention,以及`https:// medium.com/@ abc`中的完整URL - 但是很好.) (2认同)

Eva*_*van 11

微博最近发布开源的各种语言,如Java和Ruby(GEM)和Javascript它们用于查找用户名,哈希标签,列表和网址的代码实现.

这是非常正规的表达方式.