regex 正则表达式-选择但不选择

bjg7j2ky  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(134)

我是正则表达式的新手,想为我的.net应用程序创建两个正则表达式。
我有一个输入变量,它存储了一个XML。下面是xml

<Row>
......
</Row>
<Row {optional}>
.... 
</Row>
<Row {optional} header="true" {optional}>
</Row>

我需要两个正则表达式:1.正则表达式,它选择header=“true”的行2.正则表达式选择没有header=“true”的行
正则表达式只需要考虑打开标签。例如:

ccrfmcuu

ccrfmcuu1#

Regex不是在.NET中处理xml的最佳选择如果您使用的是.NET 3.5或更高版本,请查看LINQ to xml有关运行时的旧版本,请参阅XmlDocument and XPath
使用LINQ,你的代码应该是这样的:

var document = XDocument.Load("path to your file"); // or XDocument.Parse if you have content in a string
    var elementsWithHeaders = document.Descendants("Row").Where(x => 
         x.Attribute("header")!=null && x.Attribute("header").Value == "true");

这段代码不是最佳的,但是为了使它更有效,我需要知道更多关于xml结构的假设

如果使用C#6,也可以使用null-conditional operator来简化上述 predicate

var elementsWithHeaders = document.Descendants("Row").Where(x => 
         x.Attribute("header")?.Value == "true");

相关问题