正则表达式:结果值结构

时间:2017-11-21 23:31:58

标签: regex python-3.x

我目前正在玩一些原型设计工具的方法,并在pyhton中得到了一个正则表达式问题。 得到一个字符串" aaa bbb ccc ddd eee fff ggg"。 我现在想要搜索所有类型为bbb .... fff和ccc ... fff的子集。 我正在使用正则表达式(bbb。* fff)|(ccc。* fff)。但结果集只包含一个条目。 做如下:

final_string = "aaa bbb ccc ddd eee fff ggg"
regex = '(bbb.*fff)|(ccc.*fff)'
pattern = re.compile(regex)
print(len(re.findall(pattern, final_string)))
#returns 1 resp when printing ('bbb ccc ddd eee fff', '')

然而,我想让两个子串满足要求? 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

基本上,正则表达式,为了更加优化(并且在某些情况下避免无限递归),不会反过来检查已经找到正则表达式组的位置。但是,我们可以使用re.finditer来解决此问题。

import re
final_string = "aaa bbb ccc ddd eee fff ggg"
regex = '(bbb|ccc)(?=.*?fff)'
for match in re.finditer(regex, final_string):
    print(re.search("(.*?fff)",final_string[match.start():]).group(0))

<强>输出

bbb ccc ddd eee fff
ccc ddd eee fff