要搜索到嵌套级别的Regex表达式

本文关键字:Regex 表达式 搜索 嵌套 | 更新日期: 2023-09-27 18:21:38

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

比如说:我有类似的字符串

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

输出应该是sam@somedomain.com

要搜索到嵌套级别的Regex表达式

您可以简单地使用以下模式:

{([^{}]*)}

这将匹配像{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];
}