【问题标题】:Remove empty <p></p> tags from html String in Swift从 Swift 中的 html 字符串中删除空的 <p></p> 标记
【发布时间】:2015-08-04 11:53:12
【问题描述】:

我正在尝试从内容为 html 的字符串中删除空的 &lt;p&gt;&lt;/p&gt; 标记。我曾尝试使用正则表达式,例如;

let deleteRegex = NSRegularExpression(pattern: "<p[^>]*><\\/p[^>]*>", options: NSRegularExpressionOptions.allZeros, error: nil)
deleteRegex?.stringByReplacingMatchesInString(comment.text!, options: NSMatchingOptions.allZeros, range: NSMakeRange(0, (comment.text! as NSString).length), withTemplate: "")

但是我没有成功。任何帮助将不胜感激。

【问题讨论】:

  • 使用 jquery.. $('htmlstring').find('p').remove()
  • 我想在客户端做。无论如何谢谢@raghavendra。
  • 如果您阅读我的问题,我不想删除整个 html 标签。 @EricD。
  • 链接更多的是针对那里的 cmets 而不是答案本身,实际上... :)
  • 使用(?i)&lt;/?p\\b[^&lt;]*&gt; 匹配所有打开和关闭p 标签。

标签: html ios regex swift


【解决方案1】:

你可以使用下面的sn -p来删除所有空的p标签:

var string = "Text here<p class=\"myclass\"></p> and here<p></p>"
let str = string.stringByReplacingOccurrencesOfString("(?i)<p\\b[^<]*>\\s*</p>", withString: "", options: .RegularExpressionSearch, range: nil)
print(str)

您不需要转义/,但单词边界将确保您匹配p 标记作为整个单词。 [^&lt;]* 将匹配任意属性。 \\s* 将匹配打开和关闭 p 标记之间的可选空格。

这是regex demo

【讨论】:

  • [^&lt;] 应该是 [^&gt;]。这种情况下结果是一样的,但是[^&gt;]应该比较快。
  • @rintaro:几年前我也会使用它,但&gt; 不必进行 xml 化,&lt; 应该始终如此。因此,出于安全原因,我总是更喜欢[^&lt;]* 来检查我们是否在节点内。
  • @stribizhev 我明白了。感谢您的解释:)
【解决方案2】:

请使用此模式删除 p 标签:

"(?i)<p[^>]*>"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多