我的正则表达式与python3中所需的结果不完全匹配

我的正则表达式与python3中所需的结果不完全匹配,python,regex,Python,Regex,我有一个表达式如下:这个表达式可以在几行上重复几次 period={p1:{R:{M:'-1'}},p2:{R:{D:{start:'-28',end:'-1'}} 在python 3中,我编写了以下代码: RE_DAY_END = re.compile(r'(D:{start:\'-\d+\'\,end:\')+(?P<dend>\-[0-9]+)') match_day= RE_DAY_END.findall(x) print(match_day) 为了得到第二个结果,我应该

我有一个表达式如下:这个表达式可以在几行上重复几次

period={p1:{R:{M:'-1'}},p2:{R:{D:{start:'-28',end:'-1'}}
在python 3中,我编写了以下代码:

RE_DAY_END = re.compile(r'(D:{start:\'-\d+\'\,end:\')+(?P<dend>\-[0-9]+)')
match_day= RE_DAY_END.findall(x)
print(match_day)

为了得到第二个结果,我应该做什么样的更改?

提取单个子字符串搜索函数的简单方法:

s = "period={p1:{R:{M:'-1'}},p2:{R:{D:{start:'-28',end:'-1'}}"
result = re.search(r'D:\{[^{}]+\}', s).group()
print(result)
输出:

D:{start:'-28',end:'-1'}

将所有组还原为非捕获。删除dend组。或者使用re.finditer访问.group0。请参阅阅读pydoc3 re.findall以了解发生了什么。是的,这对我很有用。谢谢您的解决方案。正如我在该解决方案中看到的,您也没有删除dend group?@MaryamPashmi我没有删除这些组,因为该解决方案来自或使用re.finditer访问.group0 opera。您是否要在这里编写您的解决方案,因为我必须投票?这也很有趣。唯一的一点是,如果你在句子中有几个模式,那就是只找到你的第一个模式,而不是其他模式,也许我们可以用findall代替搜索。或者使用@Wiktor StribiżewI的解决方案,我根据您的初始输入和预期输出使用了搜索。当然,对于多个匹配项,应该使用re.findall或re.finditer。另外一点是,在您的表达式中,我不能准确地捕捉开始和结束,如果我用另一个词代替这两个词,那么我也会提取它。顺便问一下,你能开始一点你的表达是什么吗?@MaryamPashmi,如果你期待另一个结果,你应该详细阐述你的问题并扩展你想要的结果
D:{start:'-28',end:'-1'}