【问题标题】:RegEx to remove new line characters and replace with comma正则表达式删除换行符并用逗号替换
【发布时间】:2014-01-09 16:26:45
【问题描述】:

我使用 Nokogiri 抓取了一个网站,在使用 xpath 之后,我得到了以下字符串(这是几个 td 被推入一个字符串)。

"Total First Downs\n\t\t\t\t\t\t\t\t359\n\t\t\t\t\t\t\t\t274\n\t\t\t\t\t\t\t"

我的目标是把它变成一个如下所示的数组(它将是一个嵌套数组):

["Total First Downs", "359", "274"]

问题是创建一个正则表达式方程,该方程会在最后一组整数之后删除转义字符,在一个“,”中包含但不在“,”中包含。如果最后一组整数后面的逗号是必需的,我可以使用 #compact 来消除数组中出现的 nil 。如果您需要有关我如何在此处抓取网站的代码:(请注意,我保存了网页以进行测试,以使我的 IP 地址在试用阶段不会被烧毁)

f = File.open('page')
doc = Nokogiri::HTML:(f)
f.close

number = doc.xpath('//tr[@class="tbdy1"]').count

stats = Array.new(number) {Array.new}
i = 0

doc.xpath('//tr[@class="tbdy1"]').each do |tr|
  stats[i] << tr.text
  i += 1
end

感谢您的帮助

【问题讨论】:

    标签: ruby regex arrays


    【解决方案1】:

    我不完全理解你的问题,但结果可以很容易地实现:

    "Total First Downs\n\t\t\t\t\t\t\t\t359\n\t\t\t\t\t\t\t\t274\n\t\t\t\t\t\t\t"
    .split(/[\n\t]+/)
    # => ["Total First Downs", "359", "274"]
    

    【讨论】:

      【解决方案2】:

      试试gsub

      "Total First Downs\n\t\t\t\t\t\t\t\t359\n\t\t\t\t\t\t\t\t274\n\t\t\t\t\t\t\t".gsub("/[\n\t]+/",",")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        • 2011-07-01
        • 1970-01-01
        相关资源
        最近更新 更多