Регулярное выражение для получения всех значений между пользовательскими тегами - PullRequest
2 голосов
/ 29 апреля 2009

У меня есть пользовательский тег для объекта FLASH, который я хочу включить в содержимое cms. теперь, когда я читаю содержимое, я хотел бы получить этот пользовательский тег и значение между ними.

Пользовательский тег:

<myflash filename="test.swf" width="500" height="400">
  <param name="wmode" value="somevalue"></param>
  <param name="bgcolor" value="#ffffff"></param>
  <var name="id" value="testid"></var>
</myflash>

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

Может кто-нибудь помочь, пожалуйста?

С уважением,

Vipul

Ответы [ 3 ]

5 голосов
/ 29 апреля 2009

Regex, IMO, не тот инструмент для обработки XML. Почему бы не использовать XmlDocument или XDocument и т. Д.? Если это HTML (примечание без «X»), тогда может пригодиться HTML Agility Pack .

С помощью XmlDocument и HTML Agility Pack вы можете использовать xpath / xquery, поэтому вы можете просто использовать .SelectNodes("//myflash"). XDocument имеет аналогичный, но другой метод: .Descendants("myFlash").

3 голосов
/ 29 апреля 2009

Вы можете начать с очень простого регулярного выражения:

<myflash[^>]*>(.*?)</myflash>

Просто убедитесь, что вы используете «не жадный» захват (.*?), чтобы ".*" совпадало как можно меньше.

Также, используйте RegexOptions.SingleLine, чтобы точка соответствовала каждому символу, включая \n:

Regex re = new Regex("<myflash[^>]*>(.*?)</myflash>", RegexOptions.SingleLine);
0 голосов
/ 29 апреля 2009

Как говорит Марк Гравелл, регулярные выражения не подходят для анализа HTML (или XML). См. Можете ли вы привести некоторые примеры того, почему трудно анализировать XML и HTML с помощью регулярного выражения? , почему. Вам гораздо лучше использовать HTML-парсер. См. Можете ли вы привести пример разбора HTML с вашим любимым парсером? для примеров того, как использовать парсеры на многих языках (есть как минимум два примера, использующих C #).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...