如何使用Regex表达式搜索搜索字符串到嵌套级别
喜欢说:我有像
这样的字符串var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";
Out put应为sam@somedomain.com
答案 0 :(得分:5)
你可以简单地使用这种模式:
{([^{}]*)}
这将匹配{some content}
之类的任何字符串,该字符串不包含任何其他组,例如{some content}
。您可以测试此here。
您可以使用以下方式捕捉:
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"
答案 1 :(得分:1)
您可以使用(?<=\{)[^{}]*(?=\})
获取此结果,假设使用JavaScript以外的语言。例如,在C#中,那是
result = Regex.Match(str, @"(?<=\{)[^{}]*(?=\})").Value;
如果您使用的是JavaScript,请使用\{([^{}]*)\}
并访问$1
获取匹配结果:
var myregexp = /\{([^{}]*)\}/;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1];
}