首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个正则表达式只匹配一次?

为什么这个正则表达式只匹配一次?
EN

Stack Overflow用户
提问于 2015-08-31 15:47:00
回答 1查看 81关注 0票数 0

我想提取中国微博的用户名。所以我使用这个代码:

代码语言:javascript
复制
def atExtractor(sentence):
    return re.findall("@.*\\s", sentence, re.I)

然后我摘录这句话:

代码语言:javascript
复制
atExtractor(u"@中国联通网上营业厅 @北京地铁 北京地铁10号线,从惠新西街南口到海淀黄庄")

它得到:

代码语言:javascript
复制
[u'@中国联通网上营业厅 @北京地铁 ']

为什么裁判只能得到一次而不是两次?当我想提取hashtag时,也会发生同样的问题:

代码语言:javascript
复制
 def activityExtractor(sentence):
        return re.findall("#.*#", sentence, re.I)
 activityExtractor(u"#中国联通网上营业厅# #北京地铁# 北京地铁10号线")

它得到:

代码语言:javascript
复制
[u'#中国联通网上营业厅# #北京地铁# ']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-31 15:49:40

因为你的模式很贪婪。

代码语言:javascript
复制
re.findall("@.*?(?=\\s)", sentence, re.I)

代码语言:javascript
复制
re.findall(r"@\S*", sentence, re.I)

\S*应该匹配零或多个非空格字符。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32315126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档