我有一些字符串和字符串操作后的预期输出,
字符串ab =(abc)def - > def //在删除其中的成对括号和文本后返回字符串。
String cd = abc(def - > abc def //用空格替换不成对的括号。
String ef = abcdef) - > abcdef //用空格替换不成对的括号。
字符串gh =(abc)def(xyz) - > def //在删除其中的成对括号和文本后返回字符串。
String ij =((abc)def(xyz)) - >空//返回空字符串作为成对括号,并删除其中的文本。
字符串kl =(abc)def(xyz(abc) - > def xyz //删除成对的括号和文本并返回其余部分。
我需要对提供的字符串执行以下字符串操作。
对于成对的方括号(),{},[],要删除括号和其中的文本,并且必须用空格替换未配对的括号。 我尝试了许多正则表达式和设置计数器。但是没有按预期工作。
有什么想法吗?提前谢谢。
答案 0 :(得分:1)
您无法在java中使用单个正则表达式来解决此任务,因为java中不支持递归正则表达式(尽管它们位于perl中)。
解决此任务的正确方法是遵循Karthik Jeganathan解决方案 - 例如创建简单的代码来解析你自己的字符串。
虽然您可以将regex与while循环结合使用来解决此问题。我必须警告你,这将是非常低效的。这是代码:
int previousInputLength = 0;
String input;
while(input.length() != previousInputLength) {
previousInputLength = input.length();
input = input.replaceAll("\\([^()]*\\)", "");
}
input = input.replace("(", " ").replace(")", " ");
答案 1 :(得分:0)