正则表达式 - 选择但不是

时间:2017-03-25 06:34:43

标签: .net regex c#-4.0

我是正则表达式的新手,想为我的.net应用程序创建两个正则表达式。

我有一个存储xml的输入变量。下面是xml

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

我想要2个正则表达式: 1.正则表达式选择行标题=“真” 2.正则表达式选择没有header =“true”的行

正则表达式只需要考虑打开标签。例如:

1 个答案:

答案 0 :(得分:0)

正则表达式不是在.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来简化上面的谓词

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