比如说从控制台输入48*(1+2)+123/23,如何把他存进一个String数组中,数组单元中分别是
str[0]="48" , str[1]="*" , str[2]="(" , str[3]="+" , str[4]=")" , str[5]="+" , str[6]="123" , str[7]="/" ,
str[8]="23"
str[0]="48" , str[1]="*" , str[2]="(" , str[3]="+" , str[4]=")" , str[5]="+" , str[6]="123" , str[7]="/" ,
str[8]="23"
public class Test3{
public static void main(String[] args) {
String str="48*(1+2)+123/23";
String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))";
String[] result=str.split(regex);
System.out.println(Arrays.toString(result));
}
这个正则是用来匹配用字符之间的间隙的,
1、(?<!^)这个表示间隙的前面不能是一行的开始。
2、(?=[\\+\\-*/()]) 表示间隙之后紧跟着的是+ - * / ( )之一。
3、(?<=[\\+\\-*/()]) 表示间隙的前面是+ - * / ( ) 之一。
4、2与3之间“|”表示或
5.1与后面的组是逻辑与的关系。我解释的不是太好,我是从下面的几个贴子中学到的。详细的应用请看下面的帖子吧:http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html?42522http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html?93050
public class Test3{
public static void main(String[] args) {
String str="48*(1+2)+123/23";
String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[\\+\\-*/()]))";
String[] result=str.split(regex);
System.out.println(Arrays.toString(result));
}
}大虫子果真什么都会
http://topic.csdn.net/u/20080306/17/f37a1818-3968-49b4-8f79-e5564486d63e.html?94491都是火龙果的贴子.
火龙果的正则厉害极了!
我也是刚开始学习j2se,今天一天都在弄这个问题。
强 看不懂!
public class Test3{
public static void main(String[] args) {
String str="48*(1+2)+123/-23";
String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-]))";
String[] result=str.split(regex);
System.out.println(Arrays.toString(result));
}
}输出:
F:\java>java Test3
[48, *, (, 1, +, 2, ), +, 123, /, -23]
import java.util.*;
public class Test3{
public static void main(String[] args) {
String str="-48*(-1-2)*4+-1-23/-23";
String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-]))";
String[] result=str.split(regex);
System.out.println(Arrays.toString(result));
}
}结果是[-, 48, *, (, -, 1, -, 2, ), *, 4, +, -1, -, 23, /, -23]
public class Test3{
public static void main(String[] args) {
String str="-48*(-1+-2)+-123/-23";
String regex="(?<!^)((?=[\\+\\-*/()])|(?<=[*/()])|(?<=[\\+\\-])(?<![\\+\\-*/][\\+\\-])(?<![\\+\\-*/][(][\\+\\-])(?<!^[\\+\\-]))";
String[] result=str.split(regex);
System.out.println(Arrays.toString(result));
}
}F:\java>java Test3
[-48, *, (, -1, +, -2, ), +, -123, /, -23]
public static void main(String[] args) {
String str="48*(1+2)+123/-23";
String[] result=str.split("(?=\\+|-|\\*|/|-|\\(|\\))|(?<=[^0-9])");
System.out.println(Arrays.toString(result));
}
}