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