A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚振 龚振 龚振 中级黑马   /  2012-4-6 17:13  /  2812 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下:+,+?,++都是代表一次或多次,有什么区别呢?1和3的结果是一样的,到底是如何切的??
String str="zhangsan   lisi   wangwu";
1String regex = " +";//按空格切,一个或多个空格
2String regex = " +?";//按空格切,一个或多个空格
3String regex = " ++";//按空格切,一个或多个空格

运行后结果,1zhangsan,lisi,wangwu
                     2zhangsan, , ,lisi, , ,wangwu
                     3zhangsan,lisi,wangwu

评分

参与人数 1技术分 +1 收起 理由
技术测试刘老师 + 1 正则大家有好好看看啊!

查看全部评分

7 个回复

正序浏览
pray 高级黑马 2014-4-26 03:00:16
8#
烦!(此心情虽然就一个字,却深刻表达了我的感受,可谓言简意赅,一字千金,足可表达我深厚的文学功底和扎实的写作技巧。实在是佩服自己!
回复 使用道具 举报
pray 高级黑马 2014-4-26 01:40:19
7#
楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。看完楼主的这个帖子之后,我竟感发生出一种无以名之的悲痛感??啊,这么好的帖子,如果将来我再也看不到了,那我该怎么办?那我该怎么办?直到我毫不犹豫的把楼主的这个帖子收藏了。我内心的那种激动才逐渐平复下来。可是我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?经过痛苦的思想斗争,我终于下定决心,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止。  
回复 使用道具 举报
dd呆呆呆呆呆呆地
回复 使用道具 举报
烦!(此心情虽然就一个字,却深刻表达了我的感受,可谓言简意赅,一字千金,足可表达我深厚的文学功底和扎实的写作技巧。实在是佩服自己!
再加上以感叹号结尾,更有画龙点睛,化腐朽为神奇之意,意义深远,升华主题,把此刻我的心情表达的淋漓尽致,给人无限感动,实乃心情中之极
品,说说中之绝笔)
回复 使用道具 举报
谢谢两位的解答,我基本上明白是怎么切割的了。{:soso_e179:}
    二楼辛苦了,还举了例子{:soso_e183:}
回复 使用道具 举报
package com.crowndint.test;
import java.util.Arrays;
public class Regex {
        public static void main(String[] args) {
                String str="zhangsan   lisi   wangwu";
                /**
                 * str.split(" +?")与str.split(" ")等价,都是按照一个空格作为分割点,
                 * 所以这两中方式都将"zhangsan   lisi   wangwu"分割成了
                 *
                 */
                String[] s1=str.split(" +?");
                System.out.println("\" +?\"将str分割成了"+s1.length+"个部分"+Arrays.toString(s1));
                String[] s2=str.split(" ");
                System.out.println("\" \"将str分割成了"+s2.length+"个部分"+Arrays.toString(s2));
                /**
                 * str.split(" +")与str.split(" ++")等价,都按一个或多个空格分割字符串,把一个或多个空格都当作分割点
                 */
                String[] s3=str.split(" +");
                System.out.println("\" +\"将str分割成了"+s3.length+"个部分"+Arrays.toString(s3));
                String[] s4=str.split(" ++");
                System.out.println("\" ++\"将str分割成了"+s4.length+"个部分"+Arrays.toString(s4));
}}
运行结果:
" +?"将str分割成了7个部分[zhangsan, , , lisi, , , wangwu]
" "将str分割成了7个部分[zhangsan, , , lisi, , , wangwu]
" +"将str分割成了3个部分[zhangsan, lisi, wangwu]
" ++"将str分割成了3个部分[zhangsan, lisi, wangwu]
回复 使用道具 举报
+        重复一次或更多次,当两个++的时候结果会一样。
+?        重复1次或更多次,但尽可能少重复。
如果想要设置重复次数的话,建议使用
{n}        重复n次
{n,}        重复n次或更多次
{n,m}重复n到m次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马