删除封闭的括号java

时间:2011-10-17 18:25:08

标签: java regex

大家好我有一个像这样的字符串

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"}]                    
                    }

3 个答案:

答案 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 "