通过正则表达式的Python循环比赛(Looping through python regex ma

2019-08-01 10:34发布

这必须是比我遇到更容易。 我的问题是把一个字符串,如下所示:

ABC12DEF3G56HIJ7

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

我不能,我用我的生命,设计出一套正确使用正则表达式匹配的循环。 问题的关键是,该代码必须是完全通用的,因为我不能假定多久[AZ]片段会,也没怎么长[0-9]片段会。

谢谢你的任何援助!

Answer 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)


Answer 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)


文章来源: Looping through python regex matches