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

删除尾随逗号期间,regexp模式中出现Java语法错误,java,android,regex,whitespace,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。什么是空间?尝试一下

我有这样的字符串:

{"ssid":"TEST", "key_mgmt":"NONE",  "priority":"102",}
我试图删除最后一个属性后面的最后一个逗号

,}
使用:

.replaceAll("(,[[:space:]]*})", "}")
但它有以下错误:

Syntax error in regexp pattern near index 15:
(,[[:space:]]*})
我怎样才能解决它呢


注意:Android SDK中是否使用Java。

什么是空间?尝试一下:

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

如果您想进行测试,请尝试以下站点:

这里的技巧是使用前瞻
?=
搜索
}
,当找到它时,您现在可以匹配它前面的逗号
,并用空字符串替换逗号
“”

java中的一个示例

输出

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

您应该试试
,\s*}
。括号在您的例子中是可选的。我刚刚在普通Java中测试了它,它运行良好。这可能与Android SDK有关,但我不熟悉。它表示错误接近
}
。也许您需要用反斜杠来转义它?您确定Java支持
[[:space:]
类型表达式吗?尝试
.replaceAll(,\\p{space}*},“}”)
,或者要匹配任何Unicode空格,请使用
.replaceAll(,\\s*},“}”)
。在执行
replaceAll()
之前,无需调用
find()
,你尤其不需要把它放在一个循环中
replaceAll()
自己执行所有的查找和循环。此外,OP的正则表达式除了使用错误的字符类语法外,也很好。你的前瞻性建议并没有解决问题,也没有令人信服的理由使用它来代替OP正在做的事情。你的例子在索引5附近的regexp模式中抛出语法错误:在Android“Java”中。我没有抛出任何错误。确保你准确地复制了发布的内容
{"ssid":"TEST", "key_mgmt":"NONE",  "priority":"102"}