我正在尝试解析以下LaTeX字符串:
\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/}
。
为什么其他路径不匹配? *?
内的非贪婪{ }
似乎比群组外的*
更加贪婪,这应该重复该群组。谢谢,
答案 0 :(得分:1)
所有路径都使用重复的组模式进行匹配,但只有最后一个存储为组值。
您可以更改正则表达式以使用非捕获组(?:)
\\graphicspath\{\s*?((?:\{.*?\}\s*?)*)\}
或re.findall
/ re.finditer
中带有此正则表达式的方括号内的所有路径:
^\s.*{\S*}$