【问题标题】:regex to replace self closing html tags in c#正则表达式替换 c# 中的自闭合 html 标记
【发布时间】:2014-02-18 06:26:10
【问题描述】:

我有一个 xml,其中还包含一些 html 标签。当一个标签进入时,它会破坏页面,因为它是一个自闭合标签。比如:

<iframe width="420" height="315" src="//www.youtube.com/embed/6krfYKxJFqA" frameborder="0" />

我想替换这个并将其转换为:

任何人都可以提供带有正则表达式的 c# 代码来执行此操作。我试着做:

tmp = tmp.Replace("(<iframe[^>]*)(\\s*/>)", "$1></iframe>");

tmp = new Regex(@"(<iframe[^>]*)(\\s*/>)").Replace(tmp, "$1></iframe>");

tmp 是包含大量代码的 xml + 此 iframe 标记作为字符串。

但没有结果。

【问题讨论】:

  • 在第二个正则表达式中,您不需要双反斜杠,因为您使用的是@
  • 太棒了.. 谢谢。这就是问题所在。只是为了知识,@导致什么不同?
  • 当然。作为答案发布,请接受。

标签: c# html regex


【解决方案1】:

试试这个作为匹配表达式:

<iframe(.*?)(["\d\w\s])\/>

注意,你可以使用http://regexpal.com/来测试正则表达式,超级方便。

【讨论】:

    【解决方案2】:

    在第二个正则表达式中,您不需要将双反斜杠作为you are using @

    另外,(&lt;iframe[^&gt;]*) 也匹配最后一个 /,使用非贪婪 ? 运算符:(&lt;iframe[^&gt;]*?)(\s*/&gt;)

    【讨论】:

    • 如果我愿意,如何完全删除 iframe 标签?
    • @RossCooper 使用 &lt;iframe[^&gt;]*&gt; 并将其替换为空字符串 ""
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2019-10-16
    • 1970-01-01
    相关资源
    最近更新 更多