前言
正则表达式是一些含有特殊意义字符的字符串,而这些特殊意义的字符被称为正则表达式中的元字符。
PS: 本文章由于记录一些关于正则表达式的常用元字符、限定符和相关的类、方法等,欢迎有需要的同学随时进行查阅收藏 : )
一、String类中的matches(String regex)方法
/**
* 用于判断当前字符串对象是否和参数regex指定的正则表达式匹配
* /
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
/**
* 示例
* /
public static void main(String args[]) {
// 表示匹配英文字母(包括大写和小写), 并且英文字母出现的次数为1次或多次
String regex = "[a-zA-Z]+";
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
if(str.matches(regex)) {
System.out.println(str + "中的字符都是英文字母");
}
}
二、元字符
在正则表达式中可以用方括号括起来若干个字符来表示一个元字符,该元字符代表方括号中的任何一个字符。例如:regex = “[123]ABC”,那么"1ABC"、"2ABC"和"3ABC"都是和正则表达式regex匹配的字符串。注:"^"表示除了这些字符之外,类似于取反的操作。
元字符 | 在正则表达式中的写法 | 意义 |
---|---|---|
. | . | 代表任何一个字符 |
\d | \\d | 代表0至9的任何一个数字 |
\D | \\D | 代表任何一个非数字字符 |
\s | \\s | 代表空格类字符,’\t’,’\n’,’\x0B’,’\f’,’\r’ |
\S | \\S | 代表非空格类字符 |
\w | \\w | 代表可用于标识符的字符(不包括美元符号) |
\W | \\W | 代表不能用于标识符的字符 |
注:由于“.”代表任何一个字符,所以在正则表达式中如果想使用普通意义的点符号,必须使用[.]或用\56表示普通意义的点字符。
三、限定符
带限定修饰符的模式 | 意义 |
---|---|
X? | X出现0次或1次 |
X* | X出现0次或多次 |
X+ | X出现1次或多次 |
X{n} | X恰好出现n次 |
X{n,} | X至少出现n次 |
X{n, m} | X出现n次至m次 |
XY | X的后缀是Y |
X | Y |
四、String类中的replaceAll(String regex, String replacement)
/**
* 本方法返回一个字符串,该字符串是将当前字符串中所有和参数regex指定的正则表达式匹配的子字符串用参数replacement指定的字符串替换后的字符串。
* /
public String replaceAll(String regex, String replacement) {
return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}
/**
* 示例
* /
String s = "456abc9561def853gh".replaceAll("[a-zA-Z]+", "你好");
// 字符串s的值为: 456你好956你好853你好
五、String类中的split(String regex)
/**
* 本方法使用参数指定的正则表达式regex作为分隔标记分解出其中的单词,并将分解出的单词存放在字符串数组中。
* /
public String[] split(String regex) {
return split(regex, 0);
}