正则表达式其实就是用于操作字符串的一个规则,使用了特殊的符号表示

正则表达式对字符串的操作:

匹配:matches();

预定义字符:

. 任何字符(与行结束符可能匹配也可能不匹配)
 \d 数字:[0-9]
\D 非数字:[^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]——包括了小写字母,大写字母,下划线,数字0-9
\W 非单词字符:[^\w]

注意:任何预定义字符没有加上数量词之前都只能匹配一个字符

public class Demo1{
    public static void main(String[] args){
        System.out.println("任意字符:"+("1".matches(".")));
        System.out.println("数字字符:"+("12".matches("\\d\\d")));//“\”都是有特殊含义的,所以要\\d
        System.out.println("非数字字符:"+("@".matches("\\D")));
        System.out.println("空白字符:"+("\r".matches("\\s")));
        System.out.println("非空白字符:"+("\n".matches("\\S")));
        System.out.println("单词字符:"+("#".matches("\\w")));
        System.out.println("非单词字符:"+("a".matches("\\W")));
    }
}

运行结果:

任意字符:true
数字字符:true
非数字字符:true
空白字符:true
非空白字符:false
单词字符:false
非单词字符:false

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

class Demo2{
    public static void main(String[] args){
        System.out.println("?一次或一次也没有:"+("".matches("\\d?")));
        System.out.println("*零次或多次:"+("".matches("\\d*")));
        System.out.println("+至少出现一次:"+("".matches("\\d+")));
        System.out.println("{}恰好出现n次:"+("12345".matches("\\d{5}")));
        System.out.println("{n,}至少要出现指定次数:"+("1234".matches("\\d{5,}")));
        System.out.println("{n,m}出现次数范围在n-m次:"+("123".matches("\\d{2,5}")));
    }
}

运行结果:

?一次或一次也没有:true
*零次或多次:true
+至少出现一次:false
{}恰好出现n次:true
{n,}至少要出现指定次数:true
{n,m}出现次数范围在n-m次:true

范围词:字符类
[abc] a、b或c(简单类)
[^abc] 任何字符,除了a、b或c(否定)
[a-zA-Z] a到z或A到Z,两头的字母包括在内(范围)
[a-d[m-p]] a到d或m-p:[a-dm-p](并集)
[a-z&&[def]] d、e或f(交集)
注意:范围词里面不管内容有多长,没有数量词的配合都只能匹配一个字符。

class Demo2{
    public static void main(String[] args){
        System.out.println("出现的字符只能是:"+("d".matches("[abc]")));
        System.out.println("出现的字符除了ab::"+("d".matches("[^ab]")));
        System.out.println("出现的字符只能是a-z和A-Z、&、#:"+("A".matches("[a-zA-Z#&]")));
        System.out.println("出现的字符只能是a-z和A-Z:"+("d".matches("[a-z[A-Z]]")));
    }
}

运行结果:

出现的字符只能是:false
出现的字符除了ab::true
出现的字符只能是a-z和A-Z、&、#:true
出现的字符只能是a-z和A-Z:true