我正在尝试从字符串中删除所有 html,以便可以对其执行一些正则表达式。我发现您可以使用 Nokogiri 通过使用 xpath 来获取文本,如下所示:
Nokogiri::HTML(my_string).xpath("//text()").text
这工作得很好,但我发现它几乎随机删除了一些换行符,最终破坏了我的正则表达式。它接收到的 html 始终是有效的(尽管通常格式不正确 - 它是使用所见即所得的编辑器制作的),因此这不应该成为问题。
Nokogiri 是否有理由删除新行,有没有办法避免它?这是一个命令行脚本,所以我没有导轨或其他任何东西。
这是不保留换行符的文本示例:
<p>Composition: <span>83% Polyester Bright, 17% Spandex </span> <span><br />
</span>Washing: Cold hand wash only<span><br />
</span>Designer: James Lillis <span><br />
</span>Made in: Australia </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 元素中时,它似乎会删除换行符(出于某种原因,编辑器做了很多工作)。如果有办法阻止这种情况发生,我想知道,否则我可能会尝试事先检测到它。