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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小K哥 中级黑马   /  2016-5-23 14:58  /  354 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式规则:
        A:字符
                x 字符 x。举例:'a'表示字符a
                \\ 反斜线字符。
                \n 新行(换行)符 ('\u000A')
                \r 回车符 ('\u000D')
       
        B:字符类
                [abc] a、b 或 c(简单类)
                [^abc] 任何字符,除了 a、b 或 c(否定)
                [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
                [0-9] 0到9的字符都包括
               
        C:预定义字符类
                .         任何字符。我的就是.字符本身,怎么表示呢? \.或者[.]或者\56
                \d         数字:[0-9]
                \D         非数字
                \s        代表空格字符
                \S        代表非空格字符
                \w         单词字符:[a-zA-Z_0-9](代表标识符字符除了美元符号)
                        在正则表达式里面组成单词的东西必须有这些东西组成
                \W        不能代表标识符的字符
        D:边界匹配器
                ^ 行的开头
                $ 行的结尾
                \b 单词边界
                        就是不是单词字符的地方。
                        举例:hello world?haha;xixi
               
        E:Greedy 数量词
                X? X出现0次或1次
                X* X出现零次或多次
                X+ X出现一次或多次
                X{n} X出现恰好 n 次
                X{n,} X出现至少 n 次
                X{n,m} X出现至少 n 次,但是不超过 m 次
(六)判断功能
                String类的public boolean matches(String regex)
        例子:
                判断手机号码是否满足要求?
        代码如下:
                Scanner reader=new Scanner(System.in);
                String s=reader.nextLine();
                boolean flag=s.matches("[1][38]\\d{9}");
                System.out.println(flag);
(1)校验邮箱
                  分析:
                                A:键盘录入邮箱
                                B:定义邮箱的规则
                                        1517806580@qq.com
                                        liuyi@163.com
                                        linqingxia@126.com
                                        fengqingyang@sina.com.cn
                                        fqy@itcast.cn
                                C:调用功能,判断即可
                                D:输出结果
        代码实现:
                //定义邮箱的规则
                String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+";       
                //调用功能,判断即可
                boolean flag = email.matches(regex);               
                //输出结果
                System.out.println("flag:"+flag);
(2)分割功能练习
        代码实现:
                public class RegexDemo2 {
                        public static void main(String[] args) {
                                // 定义一个字符串
                                String s1 = "aa,bb,cc";
                                // 直接分割
                                String[] str1Array = s1.split(",");
                                for (int x = 0; x < str1Array.length; x++) {
                                        System.out.println(str1Array[x]);
                                }
                                System.out.println("---------------------");
                                String s2 = "aa.bb.cc";
                                String[] str2Array = s2.split("\\.");
                                for (int x = 0; x < str2Array.length; x++) {
                                        System.out.println(str2Array[x]);
                                }
                                System.out.println("---------------------");
                                String s3 = "aa    bb                cc";
                                String[] str3Array = s3.split(" +");
                                for (int x = 0; x < str3Array.length; x++) {
                                        System.out.println(str3Array[x]);
                                }
                                System.out.println("---------------------");                       
                                //硬盘上的路径,我们应该用\\替代\
                                String s4 = "E:\\JavaSE\\day14\\avi";
                                String[] str4Array = s4.split("\\\\");
                                for (int x = 0; x < str4Array.length; x++) {
                                        System.out.println(str4Array[x]);
                                }
                                System.out.println("---------------------");
                        }
                }
(3)我有如下一个字符串:"91 27 46 38 50"
                  请写代码实现最终输出结果是:"27 38 46 50 91"
                  分析:
                                A:定义一个字符串
                                B:把字符串进行分割,得到一个字符串数组
                                C:把字符串数组变换成int数组
                                D:对int数组排序
                                E:把排序后的int数组在组装成一个字符串
                                F:输出字符串
        代码实现:
                public class RegexDemo6 {
                        public static void main(String[] args) {
                                String s="91 27 46 38 50";
                                String [] ss=s.split(" ");
                                Integer[] ii=new Integer[ss.length];
                                for(int i=0;i<ss.length;i++)
                                        ii=Integer.valueOf(ss);
                                Arrays.sort(ii);
                                StringBuffer sb=new StringBuffer();
                                sb.append("\"");
                                for(int i=0;i<ii.length;i++){
                                        if(i==ii.length-1)
                                                sb.append(ii);
                                        else
                                                sb.append(ii).append(" ");
                                }
                                sb.append("\"");
                                System.out.println(sb.toString());
                        }
                }
(4) 替换功能
                        String类的public String replaceAll(String regex,String replacement)
                        使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
        代码实现:
                public class RegexDemo7 {
                        public static void main(String[] args) {
                                // 定义一个字符串
                                String s = "helloqq12345worldkh622112345678java";
                                // 我要去除所有的数字,用给替换掉
                                String ss=s.replaceAll("\\d+", "");
                                System.out.println(ss);
                        }
                }
(5)获取功能:
                  获取下面这个字符串中由三个字符组成的单词
                  da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
        代码实现:
                public class RegexDemo8 {
                        public static void main(String[] args) {
                                String s="da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu";
                                String regex="\\b\\w{3}\\b";
                                Matcher m=Pattern.compile(regex).matcher(s);
                                while(m.find())
                                        System.out.println(m.group());
                        }
                }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马