Получить текст после цитат в рубине - PullRequest
0 голосов
/ 08 июня 2018

Мой пример текста выглядит следующим образом:

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 и не извлекает искомое число.

Является ли регулярное выражение неправильным или мне нужноперебрать файл по-разному?

В основном после каждого trackingNumber я хочу получить все, что есть в кавычках после него.

Спасибо!

Редактировать:

Попытка сделать это в соответствии с предложением @ WiktorStribiżew в комментариях

p line.scan(/"trackingNumber"\s*:\s*"([^"]+)"/)

Теперь я получаю все trackingNumbers в виде массива, подобного этому

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

Как мне изменить это наполучить их в отдельных строках, как это?

UB08578YP
UB085789YP
ID180135791CN
ID180135728CN

1 Ответ

0 голосов
/ 09 июня 2018

может быть проще, если вы полностью прочитаете файл и запустите сканирование там примерно так

file_content = open("./my_file.txt").read
results = file_content.scan(/(?<="trackingNumber":")[^"]*(?=")/)
puts results

Он будет отформатирован.так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...