【问题标题】:Exception in RegEx pattern正则表达式模式中的异常
【发布时间】:2013-12-19 05:56:43
【问题描述】:

我想像这样解析 JSON:

{"response":[9816,{"vid":166941761,"owner_id":-460389,"title":"Хочу         спиться!","description":"Вкусная группа БОРЩ - http:\/\/vk.com\/borsch<br\/><br\/>","duration":45,"link":"video-460389_166941761","image":"http:\/\/cs322230.vk.me\/u56348533\/video\/m_ddba3f2b.jpg","image_medium":"http:\/\/cs322230.vk.me\/u56348533\/video\/l_809f4d95.jpg","date":1385374022,"views":20981,"comments":135,"player":"http:\/\/www.youtube.com\/embed\/4Ik-rjxf3dw"},{"vid":166474172,"owner_id":-460389,"title":"Скороговорка от Джигурды для Борща","description":"Вкусная гру..

我需要删除第一个表示视频总数的元素。我正在使用

json = json.replaceAll(".*[0-9],{", "");
json = "{\"response\":[" + json;

获取:

 12-03 08:49:10.964: E/AndroidRuntime(2445): java.util.regex.PatternSyntaxException:         Error in {min,max} interval near index 9:
 12-03 08:49:10.964: E/AndroidRuntime(2445): .*[0-9],{

【问题讨论】:

  • 我完全赞成快速修复正则表达式,但你真的应该使用 json 解析器。

标签: java regex json


【解决方案1】:

Nikos 说的:逃离{

但看起来你当前的方法给你留下了无效的 json。您正在删除 {,但关闭的 } 仍然存在,因此您需要将 { 添加回来作为替换的一部分:

json = json.replaceAll(".*[0-9],{", "{\"response\":[{");
                                                    ^

不过,对于您的示例数据,您可能只是在使用

json = json.replaceAll("\\[[0-9]+", "[");

【讨论】:

  • 谢谢,现在它正在工作。最终结果:json = json.replaceAll("\[[0-9]+,", "[");
【解决方案2】:

转义最后一个{,即:

json = json.replaceAll(".*[0-9],\\{", "");

但真的,真的,使用合适的 JSON 解析器!

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2012-04-20
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多