Удалить из строки то, что не соответствует шаблону JSON - PullRequest
1 голос
/ 08 октября 2019

В настоящее время я пытаюсь удалить из строки то, что не является шаблоном регулярных выражений. У меня есть строка, и я пытаюсь разобрать JSON из нее. Вот пример.

Я бы хотел удалить из строки все, что не соответствует следующему шаблону регулярных выражений JSON_FORMAT = /\{.*\:\{.*\:.*\}\}/. Я пытаюсь использовать text.gsub(JSON_FORMAT, ''), но это просто привело к удалению совпадений. Что противоположно тому, что я ищу.

1 Ответ

2 голосов
/ 08 октября 2019

Предполагая, что строковый объект - это то, что вы вставили в качестве входного текста в рубулярную ссылку, json - это просто все между каждой открытой и закрывающей фигурной скобкой {}, поэтому регулярное выражение очень простое.

require 'json' # require the standard lib

str = # the string in your rubular example

regex = /\{.*\}/
array = str.scan(regex).map{|j| JSON.parse(j.gsub(/\\/,''))}

# array is now a collection of ruby hashes.
# if you need them converted to a single json object you can do
json = array.to_json

Метод ruby ​​ String # scan делает большую часть того, что вам нужно. Но вам нужно удалить двойные escape-символы, что и делается внутри .map, используя JSON stdlib

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