Skip to main content
 首页 » 编程设计

c#之我的正则表达式有什么问题

2024年02月24日33luoye11

是的,我知道使用 RegEx 解析 HTML 通常是个坏主意,但除此之外,有人可以在这里解释错误:

 string outputString = Regex.Replace(inputString, @"<?(?i:script|embed|object|frameset|frame|iframe|metalink|style|html|img|layer|ilayer|meta|applet)(.|\n)*?>", ""); 
if (outputString != inputString) 
{ 
   Console.WriteLine("unwanted tags detected"); 
} 

它肯定会检测到预期的标签,例如:<script>和 <html> ,但它也拒绝我想要允许的字符串,例如 <B>Description</B> 和 <A href="http://www.mylink.com/index.html">A Link containing 'HTML'</A>

请您参考如下方法:

我认为问题是第一个问号

<?(?i:script 

您可能想要匹配结束 html 标签中的前导“/”字符,对吧?我认为问号使“<”成为可选的(零个或一个匹配)。

我建议使用

<(/)?(?i:script 

但我不是 RegEx 专家...