da5id da5id - 4 months ago 8
Python Question

Looping through python regex matches

This has to be easier than what I am running into. My problem is turning a string that looks like this:

ABC12DEF3G56HIJ7


into

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


And I can't, for the life of me, design a correct set of loops using REGEX matching. The crux of the issue is that the code has to be completely general because I cannot assume how long the
[A-Z]
fragments will be, nor how long the
[0-9]
fragments will be.

Thank you for any assistance!

Answer

Python's re.findall should work for you.

Live demo

import re

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

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