正则表达式的规则及代码示例

1 正则表达式的规则

1.1 字符

  • x表示字符x,举例:a表示字符a
  • \\ 反斜线字符
  • \n 换行
  • \r 回车

1.2 字符类

  • [abc] a、b 或 c
  • [^abc] 任何字符,除了a、b 或 c
  • [a-zA-Z] a到z,A到Z,包括两头字母
  • [0-9] 0到9的字符都包括

1.3 预定义字符

  • . 任何字符,\\. 表示 . 本身
  • \d 数字:[0,9]
  • \w 单词字符:[a-zA-Z_0-9]

1.4 边界匹配器

  • ^ 行的开头
  • $ 行的结尾
  • \b 单词边界

1.5 数量词

  • X? X出现0次或者1次
  • X* X出现0次或者1次或者多次
  • X+ X出现1次或者多次
  • X{n} X恰好出现n次
  • X{n, } X至少出现n次
  • X{n,m} X至少出现n次,但不超过m次

2 正则表达式的功能及代码示例

2.1 功能

  • 判断功能

    public boolean matches(String regex)

  • 分割功能

    public String[] split(String regex)

  • 替换功能

    public String replaceAll(String regex,String replacement)

  • 获取功能

    Pattern类和Matcher类的使用

2.2 判断功能代码示例

2.2.1 校验手机号
        //校验手机号

		//要求:手机号11位;第二位数字不能是"2"

		Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String phoneNumber = sc.nextLine();

        if (phoneNumber.matches("1[3-9]\\d{9}")) {

            System.out.println("Legal input");
        }
        else{

            System.out.println("Illegal input");
        }
2.2.2 校验邮箱号
       	//校验邮箱号

		//@前至少有2位,域名最多两层,例如:xxxx@xx.xxx.xx 或者  xx@xx.xxx

		Scanner sc = new Scanner(System.in);
        System.out.println("请输入邮箱号:");
        String emailNumber = sc.nextLine();

        if (emailNumber.matches("\\w{2,}@\\w{2,}(\\.\\w{2,}){1,2}")) {

            System.out.println("Legal input");
        }
        else{

            System.out.println("Illegal input");
        }

2.3 分割功能代码示例

2.3.1 判断相亲对象年龄是否符合
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = sc.nextInt();

        String rangeOfAge = "23-28";
        String[] strArray = rangeOfAge.split("-");

        int startAge = Integer.parseInt(strArray[0]);
        int endAge = Integer.parseInt(strArray[1]);

        if (age>=startAge && age<=endAge) {

            System.out.println("交个朋友吧!");
        }
        else {
            System.out.println("对不起,其实我是被逼着来相亲的");
        }
2.3.2 分割中间是多个空格的字符串
        String s = "12  re rt     g3";

        String[] strArray = s.split(" +");

        for (String ss : strArray) {
            
            System.out.println(ss);
        }
2.3.3 分割盘符路径
        //盘符上的路径,要用\\代替、

		String s = "C:\\Users\\12714\\Desktop\\Markdown笔记";

        String[] strArray = s.split("\\\\");

        for (String ss : strArray) {

            System.out.println(ss);
        }
2.3.4 给字符串中的数字内容排序
        //需要排序的字符串
        String s = "58 96 14 3 58 75 32 14 56 98";

        //将字符串分割,形成一个字符串数组
        String[] strArray = s.split(" ");

        //把字符串数组变成一个int数组
        int[] intArray = new int[strArray.length];

        for (int i = 0; i < strArray.length; i++) {

            intArray[i] = Integer.parseInt(strArray[i]);
        }

        //对数组排序
        Arrays.sort(intArray);

        //把int数组转成字符串
        StringBuilder stringBuilder = new StringBuilder();
        for (int i : intArray) {

            stringBuilder.append(i).append(" ");
        }
        
        //去掉字符串尾部空格并输出
        System.out.println(stringBuilder.toString().trim());

2.4 替换功能代码示例

        String s = "fji68907897ia2234ipfji4fjdi643o226673";

        //去除字符串中的所有数字,并用*代替
        String ss = s.replaceAll("\\d","*");
        System.out.println(ss);

        //去除字符串中的所有数字
        String sss = s.replaceAll("\\d","");
        System.out.println(sss);

2.5 获取功能代码示例

        String regex = "a*b";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher("aaaab,qwrtaab,3tttgweefab");

        while (m.find()) {

            System.out.println(m.group());
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值