在Ruby中引用后获取文本

时间:2018-06-08 16:02:38

标签: ruby-on-rails ruby regex

我的示例文本如下所示:

30","formatedMinDeliveryDate":null,"formatedMaxDeliveryDate":null,"actualDeliveryDate":null,"trackingNumber":"ID180135116580CN","shippmentTrackingUrl":"https:\u002F\u002Fwww.057872.m2749.l5119","localizedCurrency":null}},"actions":[{"label":"Leave feedback","icon":null,"value":null,"action":"link","actionParam":{"label":"LEAVE_FEEDBACK_FOR_SELLER","u

我想得到号码ID180135116580CN而我在使用正则表达式时遇到这个问题。

文件已满,我正在这样做

out_file = File.open('public/orders.txt').each do |line|

  p line[/(?<="trackingNumber":")[^"]*(?=")/]

end

但它只打印nil并且不提取我正在寻找的数字。

regexp是错误的还是我需要以不同的方式遍历文件?

基本上在每trackingNumber之后,我想得到之后引用的内容。

谢谢!

编辑:

根据评论

中的@WiktorStribiżew建议尝试了这一点
p line.scan(/"trackingNumber"\s*:\s*"([^"]+)"/)

现在,我将所有的trackingNumbers都作为一个像这样的数组

[["UB08578YP"], ["UB085789YP"], ["ID180135791CN"], ["ID180135728CN"]]

如何修改它以使它们成为这样的单独行?

UB08578YP
UB085789YP
ID180135791CN
ID180135728CN

1 个答案:

答案 0 :(得分:0)

如果您完全读取文件并在那里运行扫描

,则可能更简单
{{1}}

它会将它们格式化。以你想要的方式。