读书人

正则表达式split()疑惑.求解惑

发布时间: 2012-12-14 10:33:08 作者: rapoo

正则表达式split()迷惑...求解惑!

public void foo() {
String str = "出售[@泰兰德的香蕉,1111,1111,1@]800G!![@末日决战,2222,2222,2@]1W金....";
String[] strArr = str.split("[[\\[\\@].*[\\@\\]]]");
for (int i = 0; i < strArr.length; i++) {
System.out.println("第" + i + "个:" + strArr[i]);
}
}

输出结果为:
第0个:出售
第1个:
第2个:泰兰德的香蕉,1111,1111,1
第3个:
第4个:800G!!
第5个:
第6个:末日决战,2222,2222,2
第7个:
第8个:1W金

怎么会出现空字符串啊,干
我就想用这则表达式的方法
用substring太麻烦,不够简练
求帮助........
[最优解释]

public static void foo() {
String str = "出售[@泰兰德的香蕉,1111,1111,1@]800G!![@末日决战,2222,2222,2@]1W金....";
String[] strArr = str.split("\\[?@\\]?");
for (int i = 0; i < strArr.length; i++) {
System.out.println("第" + i + "个:" + strArr[i]);
}
}

[其他解释]
楼主,你用这种"[[\\[\\@].*[\\@\\]]]",它的输出结果貌似是 [ or @,空串就来自这两符号中间

但.*貌似被无视了
[其他解释]
2楼的结果是对的,3楼也谢谢你
就是没搞懂 怎么回事
[其他解释]
引用:
2楼的结果是对的,3楼也谢谢你
就是没搞懂 怎么回事

揭贴好快啊楼主

.*这种在character classes中失去特殊含义了,所以被无视了
@在其中不需要转义
还有你无非是需要以[@或@]分隔,也可以(\\[@
[其他解释]
@\\]),1楼也是这样,只是用的量词?实现


读书人网 >J2SE开发

热点推荐