2013-03-03 125 views
2

我的目标是读入字符串并忽略括号中的文本。忽略正则表达式中的括号之间的文本

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

的电流输出为:

詹姆斯·哈特

溜冰

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

回答

3

这会在你给出的字符串中所有非嵌套的括号工作:

String input = "James Hunt(Skateboarder)"; 
String output = input.replaceAll("\\([^)]*?\\)", ""); 
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 
+0

我同意,正则表达式在这种情况下没有意义。但是分配要求... – PedroPovedaQ 2013-03-03 01:38:02

相关问题