Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java中删除闭括号_Java_Regex - Fatal编程技术网

从java中删除闭括号

从java中删除闭括号,java,regex,Java,Regex,嗨,伙计们,我有一根这样的绳子 String main = "Sandy \"children\":[]" String foo = "\"children\":[]"; main = main.replaceAll(foo, ""); 如果我想用单个字符“”替换整个foo,那么我需要使用什么正则表达式 我将有一个类似这样的json数据,我需要替换所有空的子对象 {"data" : "Search engines", "children":[ {

嗨,伙计们,我有一根这样的绳子

String main = "Sandy \"children\":[]"
String foo = "\"children\":[]";

main = main.replaceAll(foo, "");
如果我想用单个字符“”替换整个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"}]                    
                    }

好的,现在您已经提供了更多的信息,我完全建议不要为此使用正则表达式。解析JSON并使用它的DOM表示。否则肯定会有办法愚弄你使用的任何东西。像这样的文本表示法根本不适合正则表达式


(原始答复…)

不清楚为什么要首先使用
replaceAll
和正则表达式

我猜你只是想:

main = main.replace(foo, "");

这将把
foo
视为普通字符串,而不是正则表达式。除非您确实想使用正则表达式,否则请使用
replace
而不是
replaceAll
您可以使用
Pattern.quote(String)
来确保在正则表达式中所有内容都算作文本

main = main.replaceAll(Pattern.quote(foo), "");

我不确定我是否仍然理解您的问题,并将其解析为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@karthick:但是您真的想将它们作为正则表达式处理吗?目前你的问题很不清楚。提供一些示例输入和所需输出会很有用。@@Jon:对不起Jon我理解你的观点谢谢explaining@karthick:已编辑我的答案-基本上,不要这样做。改用JSON解析器。顺便说一句,你不需要使用“@”。只要“@Jon”会通知我。。。(当你在我的回答中添加评论时,甚至不是这样)。
String main = "Sandy \"children\":[]"
String foo = ",?\"children\":\\[(\\{\\})?]";

main = main.replaceAll(foo, "");
//main == "Sandy "