在 Python 正则表达式中捕获重复子模式
匹配复杂模式时,捕获重复子模式可以增强正则表达式性能。虽然 Python 正则表达式在重复捕获方面有限制,但有一些解决方法可以有效地捕获所需的模式。
拆分和连接
提供的答案中建议的一种方法是最初匹配整个模式并稍后分割子模式。这种方法简化了正则表达式,但需要额外的拆分步骤。例如,考虑匹配电子邮件地址:
import re pattern = r'(.+?)@(\w+\.\w+)' text = "yasar@webmail.something.edu.tr" match = re.match(pattern, text) if match: email_address, domain = match.groups() subdomains = domain.split(".")
正则表达式组
如果模式更复杂并且子模式具有不同的特征,则正则表达式组(即括号) )可用于直接捕获它们。考虑以下模式:
pattern = r'(\w+)?\((\d+) entries?\)'
此模式匹配一个单词和一个可选的括号表达式,其中包含数字和文本“entries”(或“entry”)。捕获的组可以通过匹配对象访问:
text = "Received 10 entries for yesterday" match = re.match(pattern, text) if match: word, count = match.groups() if word: print("Word:", word) if count: print("Count:", count)
这种方法允许直接捕获子模式,而不需要复杂的分割例程。
以上是Python正则表达式可以有效捕获重复的子模式吗?的详细内容。更多信息请关注PHP中文网其他相关文章!