黑马程序员技术交流社区

标题: 正则表达式代码求解释! [打印本页]

作者: 袁梦希    时间: 2012-5-22 12:53
标题: 正则表达式代码求解释!
public static void main(String[] args) {

                String s = "zhangsanaaaalisibcbcccc";

                // String gex = "(.)\\1+";
                String[] arr = s.split("(.)(.)\\1+");
               
                for (String string : arr) {
                       
                        System.out.println(string);
                }

        }

(.)\\1+  代表任意字符分组,然后复用这组1次或多次。
那么(.)(.)\\1+运行的结果有点晕。
那么(.)(.)\\2+结果也有点晕
如果是(.)(.)\\n+   那么分别都是什么样的实现结果呢。
作者: 魏涞    时间: 2012-5-22 19:39
本帖最后由 魏涞 于 2012-5-22 19:46 编辑

public static void main(String[] args) {

                String s = "zhangsanaaaalisibcbcccc";

                // String gex = "(.)\\1+";
                 String[] arr = s.split("(.)(.)\\1+"); //这里的\\1是指的第一个()所包含的内容,这个LZ知道吧,
                                         //(.)(.)\\1+这里的意思是:第一个位置为任何字符,并分为第一组,第二个位置也为任意字符,并分为第二组
                                         //\\1+是第一组的内容出现1次或多次,

                 
                for (String string : arr) {
                        
                        System.out.println(string);
                 }

        }
建议LZ查看下正则表达式中分组的概念
作者: 袁梦希    时间: 2012-5-22 20:33
魏涞 发表于 2012-5-22 19:39
public static void main(String[] args) {

                String s = "zhangsanaaaalisibcbcccc";

我只想说运行的结果怎么实现的。
作者: 魏涞    时间: 2012-5-22 22:19
本帖最后由 魏涞 于 2012-5-22 22:22 编辑

        public static void main(String[] args) {
                String s = "zhangsanaaaalisibcbcccc";
                 
        // String gex = "(.)\\1+";
         String[] arr = s.split("(.)(.)\\1\\2+");
         
        for (String string : arr) {
                 
                System.out.println(string);
         }

        }

作者: 袁梦希    时间: 2012-5-22 22:21
魏涞 发表于 2012-5-22 22:19
public static void main(String[] args) {
                String s = "zhangsanaaaalisibcbcccc ...

谢谢您。
作者: 魏涞    时间: 2012-5-22 22:24
yuan 发表于 2012-5-22 22:21
谢谢您。

客气了,马友间相互帮助是应该的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2