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。我意识到我的文档是 UTF-8 而不是 ASCII,而且 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 回答