2013-03-03 117 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

相關問題