Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式以消除内部的文本<;及>;_C#_Html_Regex_Replace - Fatal编程技术网

C# 正则表达式以消除内部的文本<;及>;

C# 正则表达式以消除内部的文本<;及>;,c#,html,regex,replace,C#,Html,Regex,Replace,可能重复: 我正在尝试编写一个只返回HTML文件内容的代码。我认为最好的方法是消除括号内的所有元素,或者列出括号内的所有文本。我对正则表达式很陌生,但我很确定它们是最适合的 这是我试过的代码 Regex reg = new Regex(@"<.*>"); file = reg.Replace(file, ""); Regex reg=newregex(@“); file=reg.Replace(文件“”); 只要在一块文本前只有一个文本,它就可

可能重复:

我正在尝试编写一个只返回HTML文件内容的代码。我认为最好的方法是消除括号内的所有元素,或者列出括号内的所有文本。我对正则表达式很陌生,但我很确定它们是最适合的

这是我试过的代码

        Regex reg = new Regex(@"<.*>");
        file = reg.Replace(file, ""); 
Regex reg=newregex(@“);
file=reg.Replace(文件“”);

只要在一块文本前只有一个文本,它就可以工作。任何按顺序包含两个或两个以上这些元素的文件,比如,它只是开始删除它找到的任何文本。有人能告诉我我做错了什么吗?

正则表达式通常都很贪婪(它们匹配所能找到的最长字符串)。根据您要查找的语言,尝试检查+?还是*?运算符,将尝试最短的匹配。否则您必须构建另一个正则表达式。

那么,您得到的意外行为是因为您的正则表达式是贪婪的

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

    Regex reg = new Regex(@"<.*?>");
    file = reg.Replace(file, ""); 
Regex reg=newregex(@“);
file=reg.Replace(文件“”);
你会得到你所期望的


另外,要知道正则表达式不处理嵌套,HTML有很多嵌套,我会避免使用正则表达式来解析HTML,除非您试图在特定的HTML片段上匹配非常特定的内容

只需尝试注释中的测试字符串..*?会很有魅力的。除非你想移除其他东西。谢谢。我应该改用HTML敏捷包吗?我在一条评论中看到了这一点。@Sam你的代码给了
什么呢?@GeorgeAbrahamSiegelDuffy我自己从来没有真正解析过HTML,但我肯定会看看它。如果您需要解析HTML。@L.B它会呈现“狗屎发生”,您已经在这个线程中至少做了3次注释/链接到该注释。不要再做一个坏记录了,同时也要阅读你正在回复的答案to@Sam当你不再尝试用正则表达式解析html时,我将不再给出相同的引用。谢谢,我将阅读更多关于贪婪的内容。