web-dev-qa-db-ja.com

python正規表現の一致をループする

これは私が実行しているものより簡単でなければなりません。私の問題は、次のような文字列を回すことです。

ABC12DEF3G56HIJ7

12 * ABC
3  * DEF
56 * G
7  * HIJ

そして、私は一生、REGEXマッチングを使用してループの正しいセットを設計することはできません。問題の核心は、[A-Z]フラグメントは、また[0-9]フラグメントになります。

ご協力ありがとうございます!

57
da5id

Pythonのre.findallはあなたのために働くはずです。

ライブデモ

import re

s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')

for (letters, numbers) in re.findall(pattern, s):
    print(numbers, '*', letters)
97
Ray Toal

データセットが大きい場合は、 re.finditer を使用することをお勧めします。

import re

s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')

for m in re.finditer(pattern, s):
    print m.group(2), '*', m.group(1)
44
Mithril