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

标签 c# regex

是的,我知道使用 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 专家...

关于c# - 我的正则表达式有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461194/

相关文章:

c# - 如何从 SQL Server 代理运行作业?

c# - 如何使用 linq to xml 创建多态数组?

c# - 在 C# 中获取部分字符串的正则表达式模式或算法

java - 具有多个匹配的正则表达式不起作用

java - 为什么我应该在不同的情况下使用不同数量的转义字符?

regex - 根据特殊字符分割字符串

c# - 在解析 XDocument 时处理空 XElement

c# - 如何在 C# 中创建具有动态属性和属性的结构

python - 使用正则表达式搜索和捕获字符 Python

java - 如何去除字符串中除第一个字符以外的所有非数字?