【发布时间】:2010-10-13 22:38:33
【问题描述】:
我正在开发一个正则表达式,它将从推文中提取转推关键字和用户名。这是一个例子,用一个相当糟糕的正则表达式来完成这项工作:
tweet='foobar RT@one, @two: @three barfoo'
m=re.search(r'(RT|retweet|from|via)\b\W*@(\w+)\b\W*@(\w+)\b\W*@(\w+)\b\W*',tweet)
m.groups()
('RT', 'one', 'two', 'three')
我想要的是压缩重复的\b\W*@(\w+)\b\W* 模式并使它们成为可变数字,这样如果在@three 之后添加@four,它也会被提取。我已经尝试了很多排列来重复这个 + 不成功。
我也希望它适用于类似的东西
tweet='foobar RT@one, RT @two: RT @three barfoo';
这可以通过 re.finditer 实现 如果 模式不重叠。 (我有一个模式确实重叠的版本,所以只有第一个 RT 被拾取。)
非常感谢任何帮助。谢谢。
【问题讨论】:
-
我认为这里有答案:stackoverflow.com/questions/558105/…
-
Nm,因为这里需要转发/转发,所以只能部分回答,抱歉。
-
感谢您传递这个 - 虽然只是部分答案,但绝对有用!