循环通过python正则expression式匹配

这比我所遇到的要容易得多。 我的问题是把一个string看起来像这样:

ABC12DEF3G56HIJ7 

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

而我不能在我的生活中使用REGEX匹配来devise一组正确的循环。 问题的关键在于代码必须是完全一般的,因为我不能假定[AZ]片段将会多久, [0-9]片段将会多久。

谢谢你的帮助!

Python的re.findall应该为你工作。

现场演示

 import re s = "ABC12DEF3G56HIJ7" pattern = re.compile(r'([AZ]+)([0-9]+)') for (letters, numbers) in re.findall(pattern, s): print(numbers, '*', letters) 

如果数据集很大,最好使用re.finditer :

 import re s = "ABC12DEF3G56HIJ7" pattern = re.compile(r'([AZ]+)([0-9]+)') for m in re.finditer(pattern, s): print m.group(2), '*', m.group(1)