1

いくつかの正規表現を実行できるように、文字列からすべての html を取り除こうとしています。次のように xpath を使用して Nokogiri を使用してテキストを取得できることを発見しました。

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

これは非常にうまく機能しますが、一部の改行文字がほぼランダムに削除され、正規表現が壊れてしまうことがわかりました。受け取った html は常に有効なので (wysiwyg エディターを使用して作成されているため、整形式ではないことがよくあります)、問題になることはありません。

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ました(何らかの理由で、エディターが多くのことを行いました)。これが起こらないようにする方法がある場合は、知りたいです。そうでない場合は、おそらく事前に検出しようとします。

4

0 に答える 0