java学习笔记(二十一)正则表达式

正则表达式:符合一定规则的字符串
规则字符在java.util.regex Pattern类中

A:字符
    x 字符x(举例:a,1)
    \\ 反斜线字符

B:字符类
    [abc] a、b 或 c(简单类)
    [^abc] 任何字符,除了 a、b 或 c(否定) 
    [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 
    [0-9] 0-9字符

C:预定义字符类
    . 任何字符
    \d 数字:[0-9] 
    \w 单词字符:[a-zA-Z_0-9]


D:Greedy 数量词 
X? X,一次或一次也没有 
X* X,零次或多次 
X+ X,一次或多次 
X{n} X,恰好 n 次 
X{n,} X,至少 n 次 
X{n,m} X,至少 n 次,但是不超过 m 次  

正则表达式主要用于用户的输入是否符合规则进行判断
案例:键盘录入qq号码,校验QQ号码。
需求:
1:要求必须是5-15位数字
2:0不能开头

public class RegexDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 键盘录入qq号码
        System.out.println("请输入您的qq号码");
        // 获取录入数据
        String qq = sc.nextLine();
        //创建方法,里面使用正则表达式实现
        System.out.println(isCheck2(qq));
    }

    private static boolean isCheck2(String qq) {
        //定义正则表达式
        String reg = "[1-9][0-9]{4,14}";
        return qq.matches(reg);
    }

判断功能:

    public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。 

找出规则,写出正则(1[38][0-9]{9}),校验电话号码
13245678901 13332345678 13456789012 18812345678 18999999999
18666666666 18786868686

public class RegexDemo {
    public static void main(String[] args) {
        // 校验电话号码
        /*
         * 13245678901 13332345678 13456789012 18812345678 18999999999
         * 18666666666 18786868686
         */
        //定义正则表达式
        String reg = "1[38][0-9]{9}";
        //System.out.println("键盘输入电话号码");
        String number = "13245678901";
        System.out.println(number.matches(reg));
    }

}

分割功能

public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。   

需求:
分割如下字符串:
String s = “aa,bb,cc”;
String s2 = “aa.bb.cc”;
String s3 = “aa bb cc”;
String s4 = “aa bb cc”;
String s5 = “D:\baidu\20150826\day14”;

public class RegexDemo {
    public static void main(String[] args) {
        /**
         *    分割如下字符串:
           String s = "aa,bb,cc";
           String s2 = "aa.bb.cc";
           String s3 = "aa bb cc";
           String s4 = "aa   bb                     cc";
           String s5 = "D:\\baidu\\20150826\\day14";
         */
         String s = "aa,bb,cc";
         String reg = ",";
         String[] strS = s.split(reg);
         for (int i = 0; i < strS.length; i++) {
            System.out.println(strS[i]);
        }

         System.out.println("--------------------");
         String s2 = "aa.bb.cc";
         String reg2 = "\\.";
         String[] strS2 = s2.split(reg2);
         for (int i = 0; i < strS2.length; i++) {
            System.out.println(strS2[i]);
        }

         System.out.println("-------------------------");
         String s3 = "aa bb cc";
         String reg3 = " ";
         String[] strS3 = s3.split(reg3);
         for (int i = 0; i < strS3.length; i++) {
            System.out.println(strS3[i]);
        }

         System.out.println("-----------------");
         String s4 = "aa   bb                     cc";
         String reg4 = " +";
         String[] strS4 = s4.split(reg4);
         for (int i = 0; i < strS4.length; i++) {
            System.out.println(strS4[i]);
        }
         System.out.println("--------------------");
         String s5 = "D:\\baidu\\20150826\\day14";
         String reg5 = "\\\\";
         String[] strS5 = s5.split(reg5);
         for (int i = 0; i < strS5.length; i++) {
            System.out.println(strS5[i]);
        }
    }

}

替换功能

   public String replaceAll(String regex,String replacement):把符合regex的用replacement替换

需求:字符串中的数字使用*代替

public class RegexDemo {
    public static void main(String[] args) {
        //需求:字符串中的数字使用*代替
        //public String replaceAll(String regex,String replacement):把符合regex的用replacement替换
        String s = "我的银行卡号是:6103320894945843";
        String reg = "\\d";
        String newStr = s.replaceAll(reg, "*");
        System.out.println(newStr);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值