正则expression式的Twitter用户名
你能提供一个匹配Twitter用户名的正则expression式吗?
如果提供了Python示例,则额外奖励。
(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)
我用这个,因为它忽略了电子邮件
这里是一个示例鸣叫
@Hello how are @you doing, email @000 me @ whats.up@example.com @shahmirj
拾起:
@Hello @you @shahmirj
它也将工作的哈希标记,我使用相同的expression与@
改为#
我有一个博客条目,我不断更新它的@ http://shahmirj.com/blog/extracting-twitter-usertags-using-regex确保比较,只是在我发现了一个bug:D
这是正确的,我只是在那里偷偷摸摸的:D
如果你正在谈论他们在twitter上使用的@username
东西,那么你可以使用这个:
import re twitter_username_re = re.compile(r'@([A-Za-z0-9_]+)')
为了让每个实例成为一个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)
我使用的正则expression式,已经在多种情况下进行了testing:
/(^|[^@\w])@(\w{1,15})\b/
这是我发现testing和replacestring中的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;
这将如预期般回报我:
<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
基于Twitter的规格 :
您的用户名不能超过15个字符。 您的真实姓名可能会更长(20个字符),但为方便起见,用户名会缩短。 如上所述,用户名只能包含字母数字字符(字母AZ,数字0-9),但下划线除外。 检查以确保您所需的用户名不包含任何符号,破折号或空格。
Twitter 最近发布了开源的各种语言,包括Java,Ruby( gem )和Javascript实现的代码,用于查找用户名,哈希标记,列表和URL。
这是非常正规的expression导向。
表单中接受的唯一字符是AZ,0-9和下划线。 用户名不区分大小写 ,所以你可以使用r'@(?i)[a-z0-9_]+'
正确匹配所有内容,并且在用户之间进行区分。
更短, /@([\w]+)/
正常工作。
这是一个我在一个项目中使用的方法,该项目采用tweet对象的text属性,并在Twitter上将带有hashtags和user_mentions的文本链接到相应的页面,并遵循最新的twitter显示准则
def link_tweet(tweet): """ This method takes the text attribute from a tweet object and returns it with user_mentions and hashtags linked """ tweet = re.sub(r'(\A|\s)@(\w+)', r'\1@<a href="http://www.twitter.com/\2">\2</a>', str(tweet)) return re.sub(r'(\A|\s)#(\w+)', r'\1#<a href="http://search.twitter.com/search?q=%23\2">\2</a>', str(tweet))
一旦你调用这个方法,你可以传入参数my_tweet [x] .text。 希望这是有帮助的。
这个正则expression式似乎解决了Twitter用户名:
^@[A-Za-z0-9_]{1,15}$
最多15个字符,允许直接在@之后加上下划线(这是Twitter的),并且允许所有的下划线(在快速search之后,我发现Twitter显然也是这样)。 不包括电子邮件地址。