私は最短マッチをキャプチャする必要がある正規表現パターンを持っていますが、そのパターンがネストされている場合には怠け者マッチは機能しません。
正規表現パターン:
/{{.*?}}/
例文字列:
{{This}} is {{an example {{sentence}}}}
上記の例では、私は引き出すことを期待しています {{This}}
そして {{sentence}}
、これは最短の試合ですが、代わりに私は {{This}}
そして {{an example {{sentence}}
。なぜ非貪欲な試合がまだ貪欲であるのか - むしろどこが間違っているのか?
回答:
回答№1は6試してください: {{[^{]*?}}
これは、 "{"文字が内側の文字列に現れてはならないという事実を利用しています。それはあなたが期待しているものと一致します。
回答№2の場合は0
さて、問題はそれです .*
すべてと一致します。間にコンテンツを一致させたい場合は {{
そして }}
正規表現に従ってみることができます:
{{2}[^{]*?}{2}
デモを見る regex101で