パターン ( e\d\d
) を複数回一致させ、それぞれをグループに取り込む方法はありますか? たとえば、文字列..
blah.s01e24e25
..4 つのグループを取得したい:
1 -> blah
2 -> 01
3 -> 24
4 -> 25
使用する明白な正規表現は (Python 正規表現では:
import re
re.match("(\w+).s(\d+)e(\d+)e(\d+)", "blah.s01e24e25").groups()
..しかし、次のいずれかに一致させたい:
blah.s01e24
blah.s01e24e25e26
できないように見える、という(e\d\d)+
かできますが、最後の出現のみをキャプチャします。
>>> re.match("(\w+).s(\d+)(e\d\d){2}", "blah.s01e24e25e26").groups()
('blah', '01', 'e25')
>>> re.match("(\w+).s(\d+)(e\d\d){3}", "blah.s01e24e25e26").groups()
('blah', '01', 'e26')
TV エピソードのファイル名に一致する複数のパターンがあり、複数のエピソードを処理するために各式を複製したくないため、これを 1 つの正規表現で実行したいと考えています。
\w+\.s(\d+)\.e(\d+) # matches blah.s01e01
\w+\.s(\d+)\.e(\d+)\.e(\d+) # matches blah.s01e01e02
\w+\.s(\d+)\.e(\d+)\.e(\d+)\.e(\d+) # matches blah.s01e01e02e03
\w - \d+x\d+ # matches blah - 01x01
\w - \d+x\d+\d+ # matches blah - 01x01x02
\w - \d+x\d+\d+\d+ # matches blah - 01x01x02x03
..その他多数のパターンについても同様です。
問題を複雑にするもう1つのこと-これらの正規表現を構成ファイルに保存したいので、複数の正規表現と関数呼び出しを使用するソリューションは望ましくありません-しかし、これが不可能であることが判明した場合は、ユーザーが単純な正規表現を追加できるようにします
基本的に、正規表現を使用して繰り返しパターンをキャプチャする方法はありますか?