正则表达式用于在用括号分组时忽略内括号,java

时间:2017-01-03 09:37:29

标签: java regex

作为参考,这是我的original question。 最初我有一个字符串:"ABe(CD)(EF)GHi"

我想:"A", "Be", "(CD)", "(EF)", "G", "Hi"

两种解决方案对我有用:

String[] split = input.split("(?=[A-Z](?![^(]*\\)))|(?=\\()|(?<=\\))");

String s = "ABe(CD)(EF)GHi";
Pattern regex = Pattern.compile("\([^()]*\)|[A-Z][a-z]+|[A-Z]");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
        System.out.println(matcher.group(0));
}

但是,我现在有一个新字符串:"ABe(C(CD)D)(EF)GHi"

我希望"A", "Be", "(C(CD)D)", "(EF)", "G", "Hi"

我是否可以通过任何一种提供的解决方案进行简单的修改以获得预期的结果?

另外,如果我不应该为这个话题发布一个新问题,我道歉;我是新人。

1 个答案:

答案 0 :(得分:0)

试试这个,它可能很长,但可以按预期工作

(?=[A-z][a-z])[A-Z][a-z]|[A-z]|\(.*?\)(?:[A-Z]\))?