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
火柴:
它也适用于hashtags,我使用与@更改为相同的表达式#.
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)
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),但下划线除外.检查以确保所需的用户名不包含任何符号,短划线或空格.