在 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中文网其他相关文章!