Подтвердить что ты не робот

Цитирование через регулярные выражения python

Это должно быть проще, чем то, с чем я сталкиваюсь. Моя проблема заключается в том, что строка выглядит так:

ABC12DEF3G56HIJ7

в

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

И я не могу, для своей жизни, создать правильный набор циклов с использованием соответствия REGEX. Суть проблемы в том, что код должен быть полностью общим, потому что я не могу предположить, как долго будут фрагменты [A-Z], и как долго будут [0-9] фрагменты.

Спасибо за помощь!

4b9b3361

Ответ 1

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)

Ответ 2

Лучше использовать 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)