3

如何使用正则表达式搜索搜索字符串到嵌套级别

就像说:我有类似的字符串

var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";

输出应该是 sam@somedomain.com

4

2 回答 2

5

您可以简单地使用这种模式:

{([^{}]*)}

这将匹配任何{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"
于 2013-07-09T19:47:15.663 回答
1

(?<=\{)[^{}]*(?=\})假设使用 JavaScript 以外的语言,您可以使用 获得此结果。例如,在 C# 中,这是

result = Regex.Match(str, @"(?<=\{)[^{}]*(?=\})").Value;

如果您使用的是 JavaScript,请使用\{([^{}]*)\}并访问$1匹配结果:

var myregexp = /\{([^{}]*)\}/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
}
于 2013-07-09T19:46:29.120 回答