2016-01-11 2 views
0

У меня есть строкаJava регулярное выражение модификации lookaround утверждения

String str = "(varA=0.1;varB=0.2;varC<0.3;varD>=0.4)<?0.1>(varA=1.1;varB=1.2;varC<1.3;varD>=1.4)"; 

, и я хочу, чтобы разбить его на

(varA=0.1;varB=0.2;varC<0.3;varD>=0.4) 
<?0.1> 
(varA=1.1;varB=1.2;varC<1.3;varD>=1.4) 

Я попытался

String[] parts = str.split("(?<=>)|(?=<)"); 

Но это не сработало , Любое предложение? Благодаря! Но выскакивает ошибку

ответ

0

Вы можете использовать:

String[] parts = str.split("(?<=\\))(?=<)|(?<=>)(?=\\()"); 

RegEx Demo

Выход:

(varA=0.1;varB=0.2;varC<0.3;varD>=0.4) 
<?0.1> 
(varA=1.1;varB=1.2;varC<1.3;varD>=1.4) 
0

Попробуйте

public static void main(String[] args) { 

    String line = "(varA=0.1;varB=0.2;varC<0.3;varD>=0.4)<?0.1>(varA=1.1;varB=1.2;varC<1.3;varD>=1.4)"; 

    String pattern = "(\\(.*\\))(<.*?>)(.*)"; 
    Pattern r = Pattern.compile(pattern); 

    Matcher m = r.matcher(line); 
    if (m.find()) { 
    System.out.println("Found value: " + m.group(1)); 
    System.out.println("Found value: " + m.group(2)); 
    System.out.println("Found value: " + m.group(3)); 
    } 
} 
Смежные вопросы