删除尾随逗号期间regexp模式中的Java语法错误

时间:2015-09-28 13:23:01

标签: java android regex whitespace

我有这样的字符串:

{"ssid":"TEST", "key_mgmt":"NONE",  "priority":"102",}

我尝试删除最后一个属性后的最后一个逗号。

,}

使用:

.replaceAll("(,[[:space:]]*})", "}")

但它引发了以下错误:

Syntax error in regexp pattern near index 15:
(,[[:space:]]*})

我该如何解决?

注意:它是Android SDK中使用的Java。

2 个答案:

答案 0 :(得分:1)

这里的诀窍是使用向前看?=来搜索},当找到它时,您现在可以匹配它之前的逗号,,并替换逗号为空字符串""

java中的一个例子

public static void main(String[] args) {

         String l="{\"ssid\":\"TEST\", \"key_mgmt\":\"NONE\",  \"priority\":\"102\",}";
         String m=",(?=})";
        Pattern pat = Pattern.compile(m);
        Matcher matcher = pat.matcher(l);

        System.out.println(matcher.replaceAll(""));

}

<强>输出

{"ssid":"TEST", "key_mgmt":"NONE",  "priority":"102"}

答案 1 :(得分:0)

什么是空间?试一试:

.replaceAll(", ?}", "}")

如果您想测试,请尝试以下网站:https://regex101.com/