大家好我有一个像这样的字符串
String main = "Sandy \"children\":[]"
String foo = "\"children\":[]";
main = main.replaceAll(foo, "");
如果我想将main中的整个foo替换为单个字符“”那么我需要使用什么正则表达式?
我将拥有这样的json数据,我需要替换所有空子对象
{"data" : "Search engines",
"children":[ {
"data":"Yahoo","children":[{"data":"1","children":[{}]}]},
{"data":"Bing","children":[{"data":"2","children":[]}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]
}
答案 0 :(得分:2)
好的,现在您已经提供了更多信息,我会完全建议不使用正则表达式。解析JSON并使用它的DOM表示。否则一定会有愚弄你使用的方法。像这样的文本表示根本不是正则表达式IMO的良好匹配。
(原始答案......)
目前尚不清楚为什么你首先使用replaceAll
和正则表达式。
我怀疑你只是想要:
main = main.replace(foo, "");
这会将foo
视为普通字符串,而不是正则表达式。除非您确实希望使用正则表达式,否则请使用replace
代替replaceAll
。
答案 1 :(得分:0)
您可以使用Pattern.quote(String)
确保在正则表达式中将所有内容都计为字面值
main = main.replaceAll(Pattern.quote(foo), "");
答案 2 :(得分:0)
我不确定我是否理解你的问题并解析为JSON,然后操纵JavaScript可能就是答案......但是如果你想转此:
{"data" : "Search engines",
"children":[ {
"data":"Yahoo","children":[{"data":"1","children":[{}]}]},
{"data":"Bing","children":[{"data":"2","children":[]}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]
}
进入这个:
{"data" : "Search engines",
"children":[ {
"data":"Yahoo","children":[{"data":"1"}]},
{"data":"Bing","children":[{"data":"2"}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]
}
然后使用这个表达式:
",?\"children\":\\[(\\{\\})?]"
如下面的代码(哇,我认为这是对的,但已经有一段时间......):
String main = "Sandy \"children\":[]"
String foo = ",?\"children\":\\[(\\{\\})?]";
main = main.replaceAll(foo, "");
//main == "Sandy "