正则表达式从JSON响应中提取字符串

时间:2016-01-27 16:23:52

标签: json regex

我正在尝试从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

谢谢

2 个答案:

答案 0 :(得分:0)

{和}括号是正则表达式中的特殊字符,需要进行转义。点击此处:PatternSyntaxException: Illegal Repetition when using regex in Java

另外,正如dustmouse所说,你需要{}围绕timeZoneId,但是{和" timeZoneId"之间不存在空格。所有其他字段都在那里导致它不匹配。

答案 1 :(得分:0)

除了开场支架和" timeZoneId"之外还有更多的空白。

您想:/^\s*"timeZoneId"\s*:\s*(.+?)(?=$|,)/m

但是,使用JSON解析器。例如

echo '{
    "dstOffset": 0,
    "rawOffset": 25200,
    "status": "OK",
    "timeZoneId": "Asia/Jakarta",
    "timeZoneName": "Western Indonesia Time"
}' | jq -r '.timeZoneId'
Asia/Jakarta