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

标签 python regex

在匹配电子邮件地址时,在匹配 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/

相关文章:

python - 登录后如何重定向 django.contrib.auth.views.login?

Python 谷歌搜索

python - 逐行处理 Dask DataFrame

python - 为什么 [-1 :-1:-1] not work for reversing a string?

Python - 如何使用 mysql 数据库运行端到端测试用例?

r - 基于 R 中的字符串模式更新字符变量

javascript - 如何检查字符串中的最后一个字符是否为 'space'?

c++ - std::regex_match 和具有奇怪行为的惰性量词

regex - GNU sed 中是否还有另一个正则表达式 "flavor"?

java - 如何在java中制作正则表达式语法