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时,我将不再给出相同的引用。谢谢,我将阅读更多关于贪婪的内容。