gpt4 book ai didi

regex - Grep:无效的重复计数

转载 作者:行者123 更新时间:2023-11-29 09:02:47 26 4
gpt4 key购买 nike

我对正则表达式非常有经验,但无法弄清楚为什么这不起作用。

我的示例文本:

{
"coord":
{
"lon":-74.01,
"lat":40.71
},
"sys":
{
"message":0.2452,
"country":"United States of America",
"sunrise":1394191161,
"sunset":1394232864
},
"weather":
[
{
"id":803,
"main":"Clouds",
"description":"broken clouds",
"icon":"04n"
}
],
"base":"cmc stations",
"main":
{
"temp":270.54,
"pressure":1035,
"humidity":53,
"temp_min":270.15,
"temp_max":271.15},
"wind":
{
"speed":2.1,
"deg":130},
"clouds":
{
"all":75
},
"dt":1394149980,
"id":5128581,
"name":"New York",
"cod":200
}
}
}

我正在尝试获取 weather[0].id

我的完整脚本(curl 获取 JSON):

curl -s "http://api.openweathermap.org/data/2.5/weather?q=NYC,NY" 2>/dev/null | grep -e '"weather":.*?\[.*?\{.*?"id": ?\d{1,3}'

我总是得到错误

grep: invalid repetition count(s)

最佳答案

grep -e 无法将 \d 识别为数字。它不识别像 .*? 这样的非贪婪形式。对于命令的 grep 部分,请尝试:

grep -e '"weather":[^[]*\[[^{]*{[^}]*"id": *[0-9]\{1,3\}'

或者,如果您的 grep 支持它 (GNU),则对类似 perl 的正则表达式使用 -P 选项,您的原始正则表达式将起作用:

grep -P '"weather":.*?\[.*?\{.*?"id": ?\d{1,3}'

关于regex - Grep:无效的重复计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com