我有一个反序列化的xml,如下所示:
如何编写正则表达式以查找并仅返回第一个日期表达式23.12.2010
,这可能是每个其他xml文档中的另一个。
我从未使用过正则表达式,我甚至不知道如何为它编写模式。请帮忙。
答案 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选择所需节点并获取值。这个问题可以提供帮助:
答案 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
}