Получение нескольких значений из JSON с одним регулярным выражением

Я пытаюсь получить несколько значений в одном регулярном выражении. У меня есть скрипка здесь: http://fiddle.re/tuaddd

Мне нужно иметь возможность взять следующий JSON и извлечь 4 значения:

[
    {
        "id": "bitcoin", 
        "name": "Bitcoin", 
        "symbol": "BTC", 
        "rank": "1", 
        "price_usd": "4344.21", 
        "price_btc": "1.0", 
        "24h_volume_usd": "1503030000.0", 
        "market_cap_usd": "71799147986.0", 
        "available_supply": "16527550.0", 
        "total_supply": "16527550.0", 
        "percent_change_1h": "-0.29", 
        "percent_change_24h": "1.01", 
        "percent_change_7d": "5.32", 
        "last_updated": "1503839363"
    }
]

Значения, которые мне нужно извлечь:

  • price_usd
  • percent_change_1h
  • percent_change_24h
  • percent_change_7d

С помощью price_usd": "(.+?)" отлично работает для вытягивания одного значения, но когда я пытаюсь вытащить 2 с помощью price_usd": "(.+?)"[.+?]percent_change_1h": "(.+?)" кажется, не тянет. Как я могу сделать это наиболее эффективным способом?

Обновление - я создаю скин Rainmeter, который показывает криптовалюты. Поэтому мне нужен Perl Regex, который способен сделать это, поскольку я немного ограничен в том, что я могу сделать, поскольку это связано с их уже существующими плагинами. Например, вот что там в настоящее время:

[MeasureBTC]
Measure=Plugin
Plugin=WebParser
URL=https://api.coinmarketcap.com/v1/ticker/bitcoin/
RegExp=price_usd": "(.+?)"

[MeasureBTCUSDValue]
Measure=Plugin
Plugin=WebParser
URL=[MeasureBTC]
StringIndex=1

Как вы видите, мне, по сути, нужен 1-строчный для этого, так как я не работаю ни с одним языком программирования.

1 ответ

Решение

Решение этой проблемы выглядит так:

RegExp=(?siU)price_usd": "(.*)".*percent_change_1h": "(.*)".*percent_change_24h": "(.*)".*percent_change_7d": "(.*)"
Другие вопросы по тегам