使用单个正则表达式从 json 中提取多个值
Pulling multiple values from json with single regex
我正在尝试在单个正则表达式中获取多个值。我这里有一个 fiddle: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": "(.+?)"
非常适合提取单个值,但是当我尝试使用 price_usd": "(.+?)"[.+?]percent_change_1h": "(.+?)"
提取 2 时似乎没有提取任何值。我怎样才能以最有效的方式做到这一点?
更新 - 我正在构建一个显示加密货币的 Rainmeter 皮肤。因此,我需要能够执行此操作的 perl 正则表达式,因为我在某些方面受到限制,因为它与他们现有的可用插件有关。例如,这是当前的内容:
[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-liner 来完成此操作,因为我没有使用任何编程语言。
这个问题的解决方法是这样的:
RegExp=(?siU)price_usd": "(.*)".*percent_change_1h": "(.*)".*percent_change_24h": "(.*)".*percent_change_7d": "(.*)"
我正在尝试在单个正则表达式中获取多个值。我这里有一个 fiddle: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": "(.+?)"
非常适合提取单个值,但是当我尝试使用 price_usd": "(.+?)"[.+?]percent_change_1h": "(.+?)"
提取 2 时似乎没有提取任何值。我怎样才能以最有效的方式做到这一点?
更新 - 我正在构建一个显示加密货币的 Rainmeter 皮肤。因此,我需要能够执行此操作的 perl 正则表达式,因为我在某些方面受到限制,因为它与他们现有的可用插件有关。例如,这是当前的内容:
[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-liner 来完成此操作,因为我没有使用任何编程语言。
这个问题的解决方法是这样的:
RegExp=(?siU)price_usd": "(.*)".*percent_change_1h": "(.*)".*percent_change_24h": "(.*)".*percent_change_7d": "(.*)"