現在、私は{{.+?}}
(Python で re を使用して、その価値があるため) を使用し{{text}}
ていますが、問題は、これが時々発生することです: {{ text {{text}} text }}
. 正規表現の文献で、これを解決する方法を見てきましたが、うまくいきませんでした。どんな提案でも大歓迎です!
編集: 目標は、中央部分だけでなく、すべてを選択することです。
現在、私は{{.+?}}
(Python で re を使用して、その価値があるため) を使用し{{text}}
ていますが、問題は、これが時々発生することです: {{ text {{text}} text }}
. 正規表現の文献で、これを解決する方法を見てきましたが、うまくいきませんでした。どんな提案でも大歓迎です!
編集: 目標は、中央部分だけでなく、すべてを選択することです。
否定的な先読みを使用できます。{{(?:(?!{{).)+?}}
[編集]
のように、最大でも 1 レベルの深さでネストできる場合は{{ text {{text}} text }}
、次を使用できます。
{{[^{}]*(?:{{[^{}]*}}[^{}]*)*}}
それらが任意のレベルの深さになる可能性がある場合は、Python の re モジュールがサポートしていない再帰的な正規表現が必要です。ただし、ここの正規表現モジュールは次のとおりです。http://pypi.python.org/pypi/regex
次のように、負の文字クラスを使用する必要があると思います。
\{\{[^\}\{]+\}\}
正規表現パターンを使用してみてください
\{{2}(?:[^{}]+|(?<!\})\}(?!\})|(?<!\{)\{(?!\{)|\{{2}\}{2})\}{2}