正则表达式搜索到嵌套级别

时间:2013-07-09 19:44:41

标签: c# regex

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

喜欢说:我有像

这样的字符串
var str = "samir patel {samirpatel@test1.com{sam@somedomain.com}}";

Out put应为sam@somedomain.com

2 个答案:

答案 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];
}