2015-10-07 51 views
0

我想這個字符串分割:如何使用正則表達式分割此字符串?

5+(4/2)-4+1+(4%3)!=23+(3*5) 

到一個列表,使用regex

輸出應該是:

[5 , + , (, 4 ,/, 2 ,) , - , 4 , + , 1 , + , (, 4 , % , 3 , != , 23 , + , (, 3 , * , 5 ,) ] 

注:我的問題恰恰是與not equal運營商,該regex不認爲這是一個字符

+0

什麼是你目前的正則表達式? –

+0

@BalwinderSingh(?<= [ - + * /%()])|(?= [ - + * /%()])\\ s * – safana

回答

4

做配套,而不是分裂。

List<String> list = new ArrayList<String>(); 
Matcher m = Pattern.compile("[^\\w()]?=|\\w+|\\W").matcher(s); 
while(m.find()) { 
    list.add(m.group()) 
} 
System.out.println(list); 

DEMO

+1

'「[^ \\ w()]?= | \ \ w + | \\ W「' –

+0

謝謝,它是真的 – safana

0

請試試這個

import java.util.ArrayList; 
import java.util.List; 


public class Test { 
    public static void main(String[] args) { 
    String s="5+(4/2)-4+1+(4%3)!=23+(3*5)"; 
    String s3 = ""; 
    char c = 0; 
    List a1 = new ArrayList(); 
    for(int i=0;i<s.length();i++) 
    { 
     char temp=c; 
     c=s.charAt(i); 
     String s1= Character.toString(c); 
     String s2= Character.toString(temp); 

     if((s1.equals("=") && s2.matches("!"))) 
     { 
      s1=s2+s1; 
      a1.add(s1); 
     } 
     else if(s1.matches("[0-9]+") ||(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%")||s1.equals("(")||s1.equals(")"))) 
     { 

       if(s1.matches("[0-9]+")) 
       { 
        s3=s3+s1; 

       } 
       else if(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%") ||s1.equals("(") ||s1.equals(")")) 
       { 
        if(s3!="") 
        { 
        a1.add(s3); 
        } 
        a1.add(s1); 
        s3=""; 

       } 

     } 

    } 

    System.out.println(a1); 

    } 
} 

希望它可以幫助你!

+0

不,它不是幫助我,非常感謝你 – safana

+0

我已經改變了代碼請嘗試運行這個 –

+0

也這並不幫我 – safana

相關問題