0

现在我正在使用{{.+?}}(在 Python 中与 re,为了它的价值)来匹配{{text}},但问题是有时会发生这种情况:{{ text {{text}} text }}. 在正则表达式文献中,我已经看到了解决这个问题的方法,但我无法让它发挥作用。任何建议将不胜感激!

编辑:目标是让它全选,而不仅仅是中间部分。

4

3 回答 3

0

您可以使用负前瞻:{{(?:(?!{{).)+?}}

[编辑]

如果它们最多可以嵌套一层,如{{ text {{text}} text }},您可以使用:

{{[^{}]*(?:{{[^{}]*}}[^{}]*)*}}

如果它们可以是任意级别的深度,则需要一个递归正则表达式,Python 的 re 模块不支持。但是,这里的正则表达式模块可以:http: //pypi.python.org/pypi/regex

于 2012-11-08T20:33:57.220 回答
0

我认为您需要使用否定字符类,如下所示:

\{\{[^\}\{]+\}\}
于 2012-11-08T20:29:07.167 回答
0

您应该尝试使用正则表达式模式

\{{2}(?:[^{}]+|(?<!\})\}(?!\})|(?<!\{)\{(?!\{)|\{{2}\}{2})\}{2}
于 2012-11-08T20:51:05.153 回答