文章目录

  • 正则表达式
  • 前言
  • 正则表达式规范
  • 常用正则规范
  • 数量表示(X表示一组规范)
  • 逻辑运算符(X、Y表示一组规范)
  • 支持正则的Pattern类和Matcher类
  • 案例演示
  • 运行结果
  • String类对正则表达式的支持
  • String类的正则支持
  • 案例演示
  • 运行结果
  • 总结


正则表达式

前言

正则表达式在编程界是一种非常重要的应用,使用正则表达式可以方便地对数据进行匹配,还可以执行更加复杂地字符串验证、拆分、替换的功能。

正则表达式规范

常用正则规范

序号

规范

描述

序号

规范

描述

1

\\

表示反斜线(\)字符

9

\w

表示字母、数字、下划线

2

\t

表示制表符

10

\W

表示非字母、数字、下划线

3

\n

表示换行

11

\s

表示所有空白字符(换行、空格等)

4

[abc]

字符a、b或c

12

\S

表示所有非空白字符

5

[^abc]

表示除了a、b、c之外的任意字符

13

^

行的开头

6

[a-zA-Z0-9]

表示由字母、数字组成

14

$

行的结束

7

\d

表示数字

15

.

匹配除了换行符之外的任意字符

8

\D

表示非数字

数量表示(X表示一组规范)

序号

规范

描述

序号

规范

描述

1

X

必须出现一次

5

X{n}

必须出现n次

2

X?

可以出现0次或1次

6

X{n,}

必须出现n次以上

3

X*

可以出现0次、1次或多次

7

X{n,m}

必须出现n~m次

4

X+

可以出现1次或多次

逻辑运算符(X、Y表示一组规范)

序号

规范

描述

序号

规范

描述

1

XY

X规范后跟着Y规范

3

(X)

作为一个捕获组规范

2

X|Y

X规范或Y规范

支持正则的Pattern类和Matcher类

在java.util.regex包中的Pattern、Matcher两个类支持在程序中应用Pattern类和Matcher类。

  • Pattern类负责定义正则表达式规范,即:Pattern p = Pattern.compile(String regex)设置正则表达式规则,Mathcer m = Pattern.matcher(String str)获取Matcher类实例化对象。
  • Matcher类实例化对象可以通过matches()方法判断此字符串是否满足正则表达式规则。
案例演示
package chapter_eleven;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo01 {
    public static void main(String[] args) {
        String str = "1234567890";                      //构建字符串

        Pattern pattern = Pattern.compile("[0-9]+");        //实例化Pattern类对象,正则规则为匹配1个或多个数字
        Matcher matcher = pattern.matcher(str);             //验证字符串内容是否合法

        if(matcher.matches()){                              //正则检验,成功返回true,否则返回false
            System.out.println("合法的字符串!");
        }else {
            System.out.println("不合法的字符串!");
        }
    }
}
运行结果
合法的字符串!

String类对正则表达式的支持

在String类中有3个方法支持正则操作

String类的正则支持

序号

方法

类型

描述

1

public boolean matches(String regex)

普通

字符串匹配

2

public String replaceAll(String regex, String replacement)

普通

字符串替换

3

public String[] split(String regex)

普通

字符串拆分

案例演示
package chapter_eleven;

public class RegexDemo02 {
    public static void main(String[] args) {
        String str = "A059B321C456D321E543";

        boolean flag = str.matches("([A-Z][0-9]{3})+");                         //进行字符串匹配
        String[] strs = str.split("[0-9]+");                                    //进行字符串拆分
        String strReplace = str.replaceAll("\\d+","\t");           //进行字符串的替换

        System.out.println("正则匹配的结果---->" + flag);                               //输出结果
        System.out.println("正则替换的结果---->" + strReplace);

        System.out.print("正则拆分的结果---->");
        for (int i = 0; i < strs.length; i++){
            System.out.print(strs[i] + "、");
        }
    }
}
运行结果
正则匹配的结果---->true
正则替换的结果---->A	B	C	D	E	
正则拆分的结果---->A、B、C、D、E、

总结

使用正则表达式可以方便地对字符串进行验证、拆分、替换等复杂地功能,在开发中经常会用到String类提供地正则支持,而很少采用Pattern和Matcher类,运用一些正则表达式时,要注意对一些敏感的字符进行转义操作。