2016-09-26 3 views
-4

У меня есть десериализованное XML, который выглядит следующим образом:Regex дата XML выражение

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

Как написать регулярное выражение, чтобы найти и вернуть только первое выражение даты 23.12.2010, которое может быть другим в каждой другой XML-документов ,

Я никогда не использовал регулярное выражение, и я даже не знаю, как написать шаблон для него. Пожалуйста помоги.

+1

Если дата всегда отображается в 'line = 7' и' id = 17', вы должны пойти с парсером XML. – hjpotter92

+0

Если вам нужно регулярное выражение для определения даты с шаблоном 'dd.mm.yyyy', то то, что вам нужно, похоже на' \ d {2} \. \ D {2} \. \ D {4 } 'или как' \ d \ d? \. \ d \ d? \. \ d {4} ', если у вас может быть дата типа' 1/2/2010' вместо '01/02/2010'. –

+0

Его нет, я должен сделать это с помощью регулярного выражения –

ответ

3

Не использовать регулярное выражение для синтаксического анализа 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?

+0

Спасибо за совет. Я попробую это;) –

+0

@GrzesiekZimnoch вы можете принять ответ, если помогли. – mybirthname

0

Как было предложено другим, используйте/Xml анализатор Html. Если вы действительно хотите использовать регулярное выражение, вы можете попробовать следующее:

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 
} 
+0

ОК. Спасибо. У меня есть проблема, что моя программа должна читать все документы, как это. У меня есть дата, например, 01.01.2000, другая дата - 01/01/2000, другая 01-01-2000 и другая 01 - 01 - 2000. Не знаю, как ее решить с рисунком. –

Смежные вопросы