正则表达式消除里面的文本<和>

时间:2012-09-25 19:14:05

标签: c# html regex replace

  

可能重复:
  Using C# regular expressions to remove HTML tags

我正在尝试编写一个只返回HTML文件内容的代码。我认为最好的方法是围绕消除<中的所有元素。 ..>括号,或列出> ...<之间的所有文本。括号。我对正则表达式很陌生,但我很确定它们是要走的路。

这是我试过的代码

        Regex reg = new Regex(@"<.*>");
        file = reg.Replace(file, ""); 

哪个有效,只要只有一个&lt; ...&gt;在一段文字之前。任何顺序包含两个或多个元素的文件,例如&lt; ...&gt;&lt; ...&gt;,它只是开始删除它找到的任何文本。有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:0)

正则表达式是规则的贪婪(它们匹配他们能找到的最长的字符串)。根据您要查找的语言,尝试检查+?要么 *?运营商,将尝试最短的匹配。否则你必须建立另一个正则表达式。

答案 1 :(得分:0)

嗯,你得到的意外行为是因为你的正则表达式是贪婪的

如果您将正则表达式更改为

    Regex reg = new Regex(@"<.*?>");
    file = reg.Replace(file, ""); 

你会得到你所期望的。

另外,知道Regex不处理嵌套,HTML有很多,我会避免使用Regex解析HTML,除非你试图匹配一个特定形式的html上的一个非常具体的东西。