首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python正则表达式中捕获重复的子模式

在Python正则表达式中捕获重复的子模式
EN

Stack Overflow用户
提问于 2019-04-29 08:18:50
回答 2查看 0关注 0票数 0

在匹配电子邮件地址时,在我匹配之后yasar@webmail,我想捕获一个或多个(\.\w+)(我正在做的事情有点复杂,这只是一个例子),我尝试添加(。\ w +)+,但是它只捕获最后一场比赛。例如,yasar@webmail.something.edu.tr匹配但仅包括部分.tr之后yasar@webmail,因此我丢失.something.edu分组。我可以在Python正则表达式中执行此操作,还是首先建议匹配所有内容,然后再拆分子模式?

EN

Stack Overflow用户

发布于 2019-04-29 17:16:05

这将有效:

>>> regexp = r"[\w\.]+@(\w+)(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?"
>>> email_address = "william.adama@galactica.caprica.fleet.mil"
>>> m = re.match(regexp, email_address)
>>> m.groups()
('galactica', '.caprica', '.fleet', '.mil', None, None)

但它最多只限于六个子组。更好的方法是:

>>> m = re.match(r"[\w\.]+@(.+)", email_address)
>>> m.groups()
('galactica.caprica.fleet.mil',)
>>> m.group(1).split('.')
['galactica', 'caprica', 'fleet', 'mil']

请注意,只要电子邮件地址很简单,regexp就可以了 - 但是有很多东西会破坏它们。有关电子邮件地址正则表达式的详细处理,请参阅此问题

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006692

复制
相关文章

相似问题

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