1

Nokogiri で HTML ドキュメントを解析する次のコードがあります。

td.next_element.text.scan(/\A[^(]+/).first.gsub(/\s+/, " ").strip

何もキャッチしないcase正規表現を含むステートメントもあります。\s+を使用しようとしましたstripが、何もしませんでした。

上記の行でテストした後gsub、空白のエンコード方法に問題があることがわかりました。td.next_element.text[-2].ord期待していた 32 ではなく 160 が返されました。ドキュメントが ASCII ではなく UTF-8 であり、160 は非改行スペースであることに気付きました。

私はこれを行うことができるはずです、私は考えました:

case td.text.strip.downcase.gsub(/\xA0|\xC2/, ' ')

問題は、私が得る

Encoding::CompatibilityError 
  (incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)):

私は何をしますか?また、正規表現は ASCII だけでなく、すべての空白に一致するはずではありませんか?

4

1 に答える 1

4

#encoding: UTF-8コメントをスクリプトの最初の行として追加します。/[[:space:]]/Unicode の空白を見つけるために使用します。

于 2012-09-28T09:34:12.517 に答える