2014-01-17 3 views
1

Я пытаюсь извлечь строки между несколькими скобками, но она также должна работать без каких-либо скобок. Это то, что я получил в настоящее времяИзвлечь строку между необязательными скобками

Pattern pw = Pattern.compile("\\(?(.*)\\)?\\^\\(?(.*)\\)?"); 
    Matcher m = pw.matcher("2+1^(3+4)"); 
    if(m.find()){ 
     System.out.println(m.group(1)); 
     System.out.println(m.group(2)); 
    }" 

Печатается:

2+1 
3+4) 

В то время как это должно быть:

2+1 
3+4 

Любая помощь приветствуется!

ответ

0

Попробуйте сделать это нежадным с помощью:

.*? 

вместо .*

Ваше регулярное выражение:

Pattern pw = Pattern.compile("\\(?(.*?)\\)?\\^\\(?(.*?)\\)?"); 
Смежные вопросы