正则表达式获取自定义TAG之间的所有值

时间:2009-04-29 09:20:39

标签: c# asp.net regex

我有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 个答案:

答案 0 :(得分:5)

正则表达式是IMO,它是处理XML的错误工具。为什么不使用XmlDocumentXDocument等? 如果是HTML(注意没有“X”),那么HTML Agility Pack可能会有用。

使用XmlDocument和HTML Agility Pack,您可以使用xpath / xquery,因此您只需使用.SelectNodes("//myflash")即可。 XDocument有类似但不同的方法:.Descendants("myFlash")

答案 1 :(得分:3)

你可以从一个非常简单的正则表达式开始:

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

请确保使用“非贪婪”捕获(.*?),以便".*"尽可能少地匹配。

另外,使用RegexOptions.SingleLine,以便点匹配每个字符,包括\n

Regex re = new Regex("<myflash[^>]*>(.*?)</myflash>", RegexOptions.SingleLine);

答案 2 :(得分:0)

正如Marc Gravell所说,正则表达式不适合解析HTML(或XML)。有关原因,请参阅Can you provide some examples of why it is hard to parse XML and HTML with a regex?。你最好使用HTML解析器。有关如何在多种语言中使用解析器的示例,请参阅Can you provide an example of parsing HTML with your favorite parser?(至少有两个使用C#的示例)。