【发布时间】:2019-03-22 01:56:22
【问题描述】:
我正在尝试通过执行以下操作将 html 内容中的 <p>..</p> 标记内容替换为空字符串。
string = \n <img alt=\"testing artice breaking news\" src=\"something.com" />\n <p>\n \tnew vision content for testing rss feeds\n </p>\n "
当我这样做时
string.gsub!(/<p.*?>|<\/p>/, '')
它只是用空字符串替换了<p> 和</p>,但内容仍然存在。如何删除标签及其内容?
【问题讨论】:
-
必填:Do not parse HTML with regex。这可能适用于“快速而肮脏”的解决方案,但 正确的 方法是使用 HTML 解析器。 (例如 Nokogiri,用于红宝石。)
-
请注意,尽管 Onigmo(Ruby 的正则表达式引擎)在 IMO 上比 PCRE 以外的任何其他正则表达式引擎都更强大,并且可以用它解析 XHTML,但 HTML 并不那么容易:
<p>foo<ul><li>quux</ul>bar</p>是有效的 HTML,我想不出一个可以做正确事情的正则表达式解决方案(删除<p>foo和</p>,并单独留下<ul><li>quux</ul>bar)。
标签: ruby