0

Pythonと正規表現を使用して、繰り返し/重複するパターン/ブロックを次のように一致させようとします

04/00127-48
U 05062012
A: SAKARK
T_ Par.: dsfsd

04/00127-48
U 05062012
A: SAKARK
T_ Par.: dsfsd
04/00168-42
U 05062012
A: SAKARK
T_ Par.: fdfs
04/00168-43
U 05062012
A: SAKARK
T_ Par.: fdfs

私が試してみました

'(?=(\d+\/.*))'

これはうまくいくようです

'((\d+\/.*?)=?\d+\/)

しかし、より良いアプローチはありますか?

4

1 に答える 1

2

これはあなたの質問に答えます:

re.findall(r'.+?(?=\d\d\/|$)',s,re.DOTALL)

re.DOTALL.行末に一致させるために必要です。

正規表現のr前にあると生の文字列になるため、バックスラッシュを含むエスケープはそのまま残されるため、正規表現関数がそれらを処理します。ここでは必要ありませんが、それでも正規表現の良い習慣です。

あなたの質問はあまり明確ではありません。たぶん、これはあなたが望むものによりよく一致しますか?

list(zip(*[iter(s.splitlines())]*4))

タプル付きのリストを提供します。

于 2012-07-07T18:20:33.813 に答える