检测最后一个引号

时间:2014-07-16 20:49:47

标签: java regex

我有一些Json文本响应,我正在解析并需要提取一些值。这就是我正在做的事情。

在Json回复中我有这样的事情:

"createdOn": 1405536449291,
"updatedOn": 1405536511282,
"url": "https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"",
...etc

我需要拉出/捕获这3个值(只是值,没有引号/逗号围绕Json值)

  • 1405536449291
  • 1405536511282
  • https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"

Here is what I have so far.正如您所看到的,我非常接近。 createdOnupdatedOn值是正确的,但问题是第一个引号围绕" JohnSmith"导致正则表达式认为它已经完成。

我错过了这个问题的解决方法吗?感谢。

1 个答案:

答案 0 :(得分:-1)

只需从模式中移除\"即可。

所以

(?:url|createdOn|updatedOn)\":\\s\"?([^\",]*)

变为

(?:url|createdOn|updatedOn)\":\\s\"?([^,]*)

所以它停在逗号而不是引号

编辑:

我现在注意到你提供的代码中的字符串似乎格式不正确。它是sais:

\"https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"

但应该说

\"https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"\"

因为URL的末尾也应该有一个引号。

在这种情况下,可以使用以下模式解决:

(?:url|createdOn|updatedOn)\":\\s\"?(.*?)\"?,
相关问题