正規表現を使用してネストされたレベルまで検索文字列を検索する方法
言うように:私は次のような文字列を持っています
var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";
出力は sam@somedomain.com である必要があります
このパターンを簡単に使用できます。
{([^{}]*)}
{some content}
これは、 のような他のグループを含まないような任意の文字列と一致します{some content}
。これはここでテストできます。
これをキャプチャするには、次を使用します。
var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";
var regex = new Regex("{([^{}]*)}");
var matches = regex.Matches(str);
var output = matches[0].Groups[1].Value;
// output == "sam@somedomain.com"
またはもっと簡単に:
var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";
var output = Regex.Match(str, "{([^{}]*)}").Groups[1].Value;
// output == "sam@somedomain.com"
(?<=\{)[^{}]*(?=\})
JavaScript 以外の言語を想定すると、 を使用してこの結果を得ることができます。たとえば、C# では、
result = Regex.Match(str, @"(?<=\{)[^{}]*(?=\})").Value;
JavaScript を使用している場合は、一致結果を使用\{([^{}]*)\}
してアクセスします。$1
var myregexp = /\{([^{}]*)\}/;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1];
}