在匹配电子邮件地址时,在匹配 yasar@webmail
之类的内容后,我想捕获一个或多个 (\.\w+)
(what I am做有点复杂,这只是一个例子),我尝试添加 (.\w+)+ ,但它只捕获最后一场比赛。例如, yasar@webmail.something.edu.tr
匹配但仅在 yasar@webmail
部分之后包含 .tr
,所以我丢失了 .something
和 .edu
组。我可以在 Python 正则表达式中执行此操作,还是建议您先匹配所有内容,然后再拆分子模式?
最佳答案
re
模块不支持重复捕获(regex
支持):
>>> m = regex.match(r'([.\w]+)@((\w+)(\.\w+)+)', 'yasar@webmail.something.edu.tr')
>>> m.groups()
('yasar', 'webmail.something.edu.tr', 'webmail', '.tr')
>>> m.captures(4)
['.something', '.edu', '.tr']
在您的情况下,我稍后会拆分重复的子模式。它产生了一个简单易读的代码,例如,参见 @Li-aung Yip's answer 中的代码.
关于python - 在 Python 正则表达式中捕获重复的子模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764930/