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