Python 正規表現での繰り返しサブパターンのキャプチャ
複雑なパターンと一致する場合、繰り返しサブパターンをキャプチャすると正規表現のパフォーマンスが向上します。 Python の正規表現にはキャプチャの繰り返しには制限がありますが、目的のパターンを効果的にキャプチャするための回避策があります。
分割と連結
提供された回答で提案されている 1 つのアプローチは次のとおりです。最初にパターン全体を照合し、後でサブパターンを分割します。このアプローチでは正規表現が簡素化されますが、分割には追加の手順が必要です。たとえば、電子メール アドレスの一致を検討してください。
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」) を含むオプションのかっこ内の式に一致します。キャプチャされたグループには、match オブジェクトを通じてアクセスできます:
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 Regex は繰り返されるサブパターンを効果的にキャプチャできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。