如何使用正则表达式搜索搜索字符串到嵌套级别
就像说:我有类似的字符串
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];
}