2017-12-04 22 views
2

Handlebars.Netのメール内容を解析しています。Regex - 二重中括弧( `{{text}}`)で囲まれたテキストを検索しますが、三角括弧( '{{{text}}}')は検索しません。

string template = "{{I should be found}} but {{{I shouldn't}}}"; 

私は先読みし、これらのタグを見つけるためにlookbehindsのいくつかの組み合わせを使用する必要があると思うが、私はこれを動作させることはできません:ユースケースはそうのようなものです。私は必要なものに近い正規表現を作成しましたが、必要な方法とまったく同じようには一致しません - [^{]({{.*}})(!?})

アイデア?

あなたが負の前後参照アサーションと、この正規表現を使用することができます
+0

正規表現の味は何ですか? – anubhava

+0

@anubhavaこの例はpcre(php)です - 私はhttps://regex101.com/を使用しています – thisextendsthat

答えて

3

(?<!{){{[^{}]+}}(?!}) 

RegEx Demo

  • (?!})は、次の文字が}
  • (?<!{)がある場合、一致を失敗し、負の先読みアサーションです前の文字が{
  • の場合、一致に失敗した負のlookbehindアサーション
+2

完璧、ありがとう! – thisextendsthat

関連する問題