为什么正则表达式中没有重复的内部组匹配?

2024-09-30 03:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试分析以下乳胶字符串:

\graphicspath{
  {outputs/tikz/turnover/}
  {outputs/tikz/health/}
  {outputs/tikz/flows/}
  {outputs/model/figs/compare/}
  {outputs/model/figs/sensitivity/}
  {outputs/model/figs/flows/}
}

我的正则表达式(python)是:'\\graphicspath\{\s*?(\{.*?\}\s*?)*\}'(带有全局&;多行标志), 我认为这会收集6条不同的路径。 相反,只有最后一个组与内部组匹配:{outputs/model/figs/flows/}

为什么其他路径不匹配?似乎{ }内的非贪婪*?比组外的*更贪婪,后者应该重复组。谢谢你


Tags: 字符串路径model全局outputs乳胶compareamp
1条回答
网友
1楼 · 发布于 2024-09-30 03:23:16

所有路径都与重复的组模式匹配,但只有最后一条路径存储为组值

您可以更改regex以使用非捕获组(?:)提取一个组中的所有路径

\\graphicspath\{\s*?((?:\{.*?\}\s*?)*)\}

re.findall/re.finditer此正则表达式括号内的所有路径:

^\s.*{\S*}$

相关问题 更多 >

    热门问题