现在我正在使用{{.+?}}
(在Python中使用re,以及它的值)来匹配{{text}}
,但问题是有时会发生这种情况:{{ text {{text}} text }}
。在正则表达式文献中,我已经看到了解决这个问题的方法,但我无法让它发挥作用。任何建议将非常感谢!
编辑:目标是让它选择所有,而不仅仅是中间部分。
答案 0 :(得分:0)
我认为您需要使用负面字符类,如下所示:
\{\{[^\}\{]+\}\}
答案 1 :(得分:0)
您可以使用否定前瞻:{{(?:(?!{{).)+?}}
[编辑]
如果它们最多可以嵌套在一个级别,如{{ text {{text}} text }}
,则可以使用:
{{[^{}]*(?:{{[^{}]*}}[^{}]*)*}}
如果它们可能是任意级别的深层,那么你需要一个递归正则表达式,Python的模块不支持。但是,此处的正则表达式模块执行:http://pypi.python.org/pypi/regex
答案 2 :(得分:0)
您应该尝试使用正则表达式
\{{2}(?:[^{}]+|(?<!\})\}(?!\})|(?<!\{)\{(?!\{)|\{{2}\}{2})\}{2}