我想這個字符串分割:如何使用正則表達式分割此字符串?
5+(4/2)-4+1+(4%3)!=23+(3*5)
到一個列表,使用regex
。
輸出應該是:
[5 , + , (, 4 ,/, 2 ,) , - , 4 , + , 1 , + , (, 4 , % , 3 , != , 23 , + , (, 3 , * , 5 ,) ]
注:我的問題恰恰是與not equal
運營商,該regex
不認爲這是一個字符
我想這個字符串分割:如何使用正則表達式分割此字符串?
5+(4/2)-4+1+(4%3)!=23+(3*5)
到一個列表,使用regex
。
輸出應該是:
[5 , + , (, 4 ,/, 2 ,) , - , 4 , + , 1 , + , (, 4 , % , 3 , != , 23 , + , (, 3 , * , 5 ,) ]
注:我的問題恰恰是與not equal
運營商,該regex
不認爲這是一個字符
請試試這個
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);
}
}
希望它可以幫助你!
什麼是你目前的正則表達式? –
@BalwinderSingh(?<= [ - + * /%()])|(?= [ - + * /%()])\\ s * – safana