1

我正在尝试从字符串中删除所有 html,以便可以对其执行一些正则表达式。我发现您可以使用 Nokogiri 通过使用 xpath 来获取文本,如下所示:

Nokogiri::HTML(my_string).xpath("//text()").text

这工作得很好,但我发现它几乎随机删除了一些换行符,最终破坏了我的正则表达式。它接收到的 html 始终是有效的(尽管通常格式不正确 - 它是使用所见即所得的编辑器制作的),因此这不应该成为问题。

Nokogiri 是否有理由删除新行,有没有办法避免它?这是一个命令行脚本,所以我没有导轨或其他任何东西。

这是不保留换行符的文本示例:

<p>Composition: <span>83% Polyester Bright, 17% Spandex &nbsp; &nbsp;</span>&nbsp;<span><br />
 </span>Washing: Cold hand wash only<span><br />
 </span>Designer: James Lillis&nbsp;<span><br />
 </span>Made in: Australia&nbsp;</p>

如果重要的话,我正在使用 Oj 从 JSON 文件中读取 html。这是它在 JSON 文件中的显示方式:

"\u003Cp\u003EComposition: \u003Cspan\u003E83% Polyester Bright, 17% Spandex \u0026nbsp; \u0026nbsp;\u003C/span\u003E\u0026nbsp;\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EWashing: Cold hand wash only\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EDesigner: James Lillis\u0026nbsp;\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EMade in: Australia\u0026nbsp;\u003C/p\u003E\n"

当我通过上面的 nokogiri 函数调用时,这就是它的结束方式:

Composition: 83% Polyester Bright, 17% Spandex     Washing: Cold hand wash onlyDesigner: James Lillis Made in: Australia

谢谢你的帮助

更新:我发现当\n字符位于 span 元素中时,它似乎会删除换行符(出于某种原因,编辑器做了很多工作)。如果有办法阻止这种情况发生,我想知道,否则我可能会尝试事先检测到它。

4

0 回答 0