忽略正则表达式中的括号之间的文本

时间:2013-03-03 00:52:42

标签: java regex

我的目标是读取字符串并忽略括号中的文本。

public static void main(String[] args) {
    Pattern checkRegex= Pattern.compile("([a-zA-Z]{3,30}\\s*){2}");

    Matcher regexMatcher=checkRegex.matcher("James Hunt(Skateboarder)");

    while(regexMatcher.find()){
    System.out.println(regexMatcher.group().trim());
}

目前的输出是:

  詹姆斯亨特

     

溜冰板

基本上我想要的是输出只是“James Hunt”。 在这种情况下使用什么是合适的Regex模式?

3 个答案:

答案 0 :(得分:3)

这将适用于给定String中的所有非嵌套括号:

String input = "James Hunt(Skateboarder)";
String output = input.replaceAll("\\([^)]*?\\)", "");

答案 1 :(得分:3)

  

基本上我想要的是输出只是“James Hunt”。   在这种情况下使用什么是合适的Regex模式?

尝试正则表达式:^[^(]*

答案 2 :(得分:0)

如果您不必使用正则表达式,您可以通过一个简单的迭代获取数据

String data="some (sentence (with) nested) paranhesis";
StringBuilder buffer=new StringBuilder();
int parenthesisCounter=0;
for (char c:data.toCharArray()){
    if (c=='(') parenthesisCounter++;
    if (c==')') parenthesisCounter--;
    if (c!=')' && c!='(' && parenthesisCounter==0)
        buffer.append(c);
}
System.out.println(buffer);

输出:

some  paranhesis