Java 正则表达式的用法和实例

一、概述

  • 用来描述或者匹配一系列符合某个语句规则的字符

二、单个符号

  1. 英文句点.符号:匹配单个任意字符。
  • 表达式t.o可以匹配:tnot#oteo等等。不可以匹配:tnnotoTnot正o等。
  1. 中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。
  • 表达式:t[abcd]n 只可以匹配:tantbntcntdn。不可以匹配:thntabntn等。
  1. | 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。
  • 表达式:t(a|b|c|dd)n 只可以匹配:tantbntcntddn。不可以匹配taantntabcn等。
  1. 表示匹配次数的符号
  2.  

    • 表达式:[0—9]{3}\—[0-9]{2}\—[0-9]{3} 的匹配格式为:999—99—999
      因为—符号在正则表达式中有特殊的含义,它表示一个范围,所以在前面加转义字符\
    1. ^符号:表示否,如果用在方括号内,^表示不想匹配的字符。
    • 表达式:[^x]第一个字符不能是x
      1. \S符号:非空字符
      2. \s符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。

\r符号:空格符,与\n\tab相同

三、快捷符号

1、\d表示[0—9]
2、\D表示[^0—9]
3、\w表示[0—9A—Z_a—z]
4、\W表示[^0—9A—Z_a—z]
5、\s表示[\t\n\r\f]
6、\S表示[^\t\n\r\f]

四、常用的正则表达式

1、Java:(([a-z]|_)(\\w*)){6,20}匹配以字母或下划线开头,字母数字下划线结尾的字符串
2、JavaScript:/^(\-?)(\d+)$/匹配数字
3、JavaScript:/^\w+$/匹配字母数字下划线。

五、Java 中正则表达式的应用

1、判断功能

  • public boolean matches(String regex)

案例:判断录入的手机号是否为13或者18开头

package Lemon;

import java.util.Scanner;

public class RegexDm {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机好:");
        String s = sc.nextLine();

        String regex = "1[38]\\d{9}";//定义手机好规则
        boolean flag = s.matches(regex);//判断功能
        System.out.println("flag:"+flag);
    }
}

2、分割功能

    • public String[] split(String regex)
      案例:
package Lemon;

import java.util.Scanner;

public class RegexDm {
    public static void main(String[] args){
        String age = "18-24";//定义年龄范围
        String regex = "-";
        String[] strArr = age.split(regex);//分割成字符串数组

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

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的年龄:");
        int a = sc.nextInt();
        if (a >= startAge && a <= endAge){
            System.out.println("你就是我想找的");
        }else{
            System.out.println("");
        }
    }
}

3、替换功能

  • public String replaceAll(String regex,String replacement)

案例:

package Lemon;

public class RegexDm {
    public static void main(String[] args){
        String s = "12342jasfkgnas234";
        //把字符串里面的数字替换成*
        String regex = "\\d";
        String ss = "*";
        String result = s.replaceAll(regex,ss);
        System.out.println(result);
    }
}

 

posted @ 2020-12-24 14:13  kwz  Views(661)  Comments(0Edit  收藏  举报