我正在尝试从timeZoneId中提取值,但regexr表示不匹配。
这是JSON代码:
{
"dstOffset": 0,
"rawOffset": 25200,
"status": "OK",
"timeZoneId": "Asia/Jakarta",
"timeZoneName": "Western Indonesia Time"
}
当我在regexplanet上测试时,它说 Illegal repetition {\s*"timeZoneId"\s*:\s*(.+?)\s*\}
任何人都可以帮助并解释我做错了什么。
更新
我在while循环中解析结果,所以当匹配"timeZoneId": "Asia/Jakarta",
时,我只需要该行的RegEx我想抓住Asia/Jakarta
。
谢谢
答案 0 :(得分:0)
{和}括号是正则表达式中的特殊字符,需要进行转义。点击此处:PatternSyntaxException: Illegal Repetition when using regex in Java
另外,正如dustmouse所说,你需要{}围绕timeZoneId,但是{和" timeZoneId"之间不存在空格。所有其他字段都在那里导致它不匹配。
答案 1 :(得分:0)
除了开场支架和" timeZoneId"之外还有更多的空白。
您想:/^\s*"timeZoneId"\s*:\s*(.+?)(?=$|,)/m
但是,使用JSON解析器。例如jq
echo '{
"dstOffset": 0,
"rawOffset": 25200,
"status": "OK",
"timeZoneId": "Asia/Jakarta",
"timeZoneName": "Western Indonesia Time"
}' | jq -r '.timeZoneId'
Asia/Jakarta