删除尾随逗号期间,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"}