Регулярное выражение для элемента xml

#regex

#регулярное выражение

Вопрос:

У меня есть xml в виде строки. Допустим, что имя элемента — TestDate, а дата — форма YYYY-MM-DD . Итак, другими словами <TestDate>1950-03-31</TestDate> .

Как мне это найти.

Допустим, у меня есть строка xml;

xml содержит элемент TestDate. Я хочу получить это с помощью регулярного выражения.

 string regularExpression = @"";
Regex regex = new Regex(regularExpression , RegexOptions.Compiled);
  

Что должно происходить для регулярного выражения.

Комментарии:

1. Ваш синтаксис и ссылки на объекты подразумевают, что вы используете C #, но, пожалуйста, укажите, какой язык вы используете в теге или вопросе, или в обоих

Ответ №1:

Это должно соответствовать вашей дате: [0-9]{4}-[0-9]{2}-[0-9]{2}

если вы можете использовать Perl-RegEx-Syntax, вы можете использовать d вместо [0-9]

Комментарии:

1. d работает практически для всех типов регулярных выражений, но, как указано в комментарии к другому ответу, выражение должно соответствовать всему тегу, а не только дате

Ответ №2:

Если вам нужны данные поиска только в этом элементе, то он должен быть

 <TestDate>[0-9]{4}-[0-9]{2}-[0-9]{2}</TestData>
  

Другой подход заключается в использовании XPath. Загрузите XML-строку в XmlDocument и извлеките все похожие узлы. Приведенный ниже код вернет все узлы TestDate.

 XmlNode[] nodes = doc.SelectNodes("//TestDate");
  

Комментарии:

1. Я хочу получить весь элемент, а также его содержимое.

2. Я полагаю, что ваше регулярное выражение определяет соответствие несбалансированных тегов (если используется дословно) из-за опечатки.