首页  >  文章  >  后端开发  >  如何在 Python 正则表达式中捕获重复子模式?

如何在 Python 正则表达式中捕获重复子模式?

Susan Sarandon
Susan Sarandon原创
2024-11-24 12:43:11144浏览

How Can You Capture Repeating Subpatterns in Python Regex?

在 Python 正则表达式中匹配和捕获重复子模式

在匹配电子邮件地址等复杂模式时,通常需要捕获重复子模式。例如,在像“yasar@webmail.something.edu.tr”这样的电子邮件地址中,我们需要捕获域部分“.something”和“.edu”。正则表达式提供了一种通过重复捕获组来实现此目的的方法。但是,Python re 模块并不完全支持它。

选项 1:使用 Python 的 re 模块

如果您尝试使用 (.w ) 等模式re,它将仅捕获最后一个匹配组,而不是所有匹配项。例如,使用 [email protected],它只会捕获“.tr”而错过“.something”和“.edu”。

选项 2:稍后拆分和匹配

正如所提供的答案所建议的,Python 中更直接的方法是首先匹配所有内容,然后使用字符串操作分割捕获的子模式。这可以更容易阅读和实施。例如:

import re

# Match the entire email address
email_pattern = re.compile(r'([^\s@]+)@(\w+\.\w+)')
match = email_pattern.match('[email protected]')
if match:
    # Split the domain portion
    domain = match.group(2)
    domain_parts = domain.split('.')
    print('Domain Parts:', domain_parts)

此代码捕获整个电子邮件地址,然后将域拆分为多个部分,使我们能够单独访问和存储每个子模式。

以上是如何在 Python 正则表达式中捕获重复子模式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn