用于在推文开头匹配Twitter用户名的Python正则表达式

mar*_*jop 0 python regex

我有这样的推文文字:

"@user1 @user2 blablabla @user3"
Run Code Online (Sandbox Code Playgroud)

我想使用正则表达式在推文开头过滤用户.这意味着@ user1和@ user2.并不总是有相同数量的用户,可能有一个,两个,三个......

我正在尝试使用re.IGNORECASE:

re.compile(ur'^(@[a-z0-9_]*\s)*')
Run Code Online (Sandbox Code Playgroud)

但是不符合我想要的,我已经尝试了我想出的所有东西,但都失败了.我对Python正则表达式不是很熟悉,但我会用egrep来做这件事:

echo "@user1 @user2 blablabla @user3" | egrep '^(@[[:alnum:]_]*[ ]*)*'
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑

正则表达式是正确的,我只是以错误的方式检查解决方案.

tweet = "@user1 @user2 blablabla @user3"
re.compile(ur'^(@[a-z0-9_]*\s)*').match(tweet).groups()
Run Code Online (Sandbox Code Playgroud)

代替:

re.compile(ur'^(@[a-z0-9_]*\s)*').match(tweet).group(0)
Run Code Online (Sandbox Code Playgroud)

更正式的正则表达式:

re.compile(ur'^(@\w+\s)+').match(tweet).group(0)
Run Code Online (Sandbox Code Playgroud)

Rom*_*huk 5

没有re,但有itertools:

>>> tw = "@user1 @user2 blablabla @user3"
>>> import itertools
>>> list(itertools.takewhile(lambda x: x.startswith('@'), tw.split()))
['@user1', '@user2']
Run Code Online (Sandbox Code Playgroud)