いくつかの正規表現を実行できるように、文字列からすべての html を取り除こうとしています。次のように xpath を使用して Nokogiri を使用してテキストを取得できることを発見しました。
Nokogiri::HTML(my_string).xpath("//text()").text
これは非常にうまく機能しますが、一部の改行文字がほぼランダムに削除され、正規表現が壊れてしまうことがわかりました。受け取った html は常に有効なので (wysiwyg エディターを使用して作成されているため、整形式ではないことがよくあります)、問題になることはありません。
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
ました(何らかの理由で、エディターが多くのことを行いました)。これが起こらないようにする方法がある場合は、知りたいです。そうでない場合は、おそらく事前に検出しようとします。