3

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

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());
}

当前输出为:

詹姆斯·亨特

滑板手

基本上我想要的是输出只有“詹姆斯亨特”。在这种情况下使用什么合适的正则表达式模式?

4

3 回答 3

3

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

String input = "James Hunt(Skateboarder)";
String output = input.replaceAll("\\([^)]*?\\)", "");
于 2013-03-03T00:54:54.720 回答
3

基本上我想要的是输出只有“詹姆斯亨特”。在这种情况下使用什么合适的正则表达式模式?

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

于 2013-03-03T00:57:41.247 回答
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
于 2013-03-03T01:03:32.843 回答