正则表达式xml日期表达式

时间:2016-09-26 07:47:05

标签: c# regex xml

我有一个反序列化的xml,如下所示:

http://wklej.org/id/2869540/

如何编写正则表达式以查找并仅返回第一个日期表达式23.12.2010,这可能是每个其他xml文档中的另一个。

我从未使用过正则表达式,我甚至不知道如何为它编写模式。请帮忙。

2 个答案:

答案 0 :(得分:3)

不要使用Regex进行HTML / XML解析。使用Html / Xml解析器。这里解释为什么你不应该使用它。

RegEx match open tags except XHTML self-contained tags

Can you provide some examples of why it is hard to parse XML and HTML with a regex?

您可以在XDocument或XmlDocument中加载字符串,并使用linq来获取您需要的任何内容。

这里有一个如何做的小例子:

string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Root>
    <Child>Content</Child>
</Root>";
XDocument doc = XDocument.Parse(str);

之后使用linq选择所需节点并获取值。这个问题可以提供帮助:

Finding element in XDocument?

答案 1 :(得分:0)

正如其他人所建议的那样,使用Html / Xml解析器。如果你真的想使用正则表达式,你可以试试这个:

 string xml= "yourXMLString";
 string pattern = @"\d{1,2}\.\d{1,2}\.\d{4}"; //also matches dates like 1.3.2016. Use \d{2} to only match 01.03.2016
 Regex regEx = new Regex(pattern);

 Match m = regEx.Match(xml);   // m is the first match
 if (m.Success)
 {
    Console.WriteLine(m.Value); //prints the first found date
 }