正则表达式,用于查找标签之间最接近的文本匹配项



我需要检测 .NET 代码中标记之间的文本,如下所示:

ololo <z>text needed to be found</z> azaza

但字符串可以包含多个标记条目:

asd <z>text1</z> dgfh <z>text2</z> gfhj

简单的正则表达式(<z>.+</z>)不能识别多个条目,并解析从第一个到最后一个符号的匹配。
我试图构建表达式来查找标签之间的任何符号,但不包含结束标签 (<z>.+[^(<z>)]</z> ),但由于表达式逻辑[ ]它不起作用。

什么表达是正确的?

var text = "asd <z>text1</z> dgfh <z>text2</z> gfhj";
string pattern = "<z.*?>(.*?)</z>";         
Regex r = new Regex(pattern);
foreach (Match match in r.Matches(text))
{           
    string textBetweenTags = match.Groups[1].ToString();
    //your logic here
}

最新更新