我目前正在玩一些原型设计工具的方法,并在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', '')
然而,我想让两个子串满足要求? 我怎么能这样做?
答案 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