概述
正则表达式即正确规则的表达式,是一段用来校验和匹配指定数据的格式是否符合正确规则的字符串。正则表达式是一种独立的语法,Java和其他语言都会支持。
Pattern类
此类的作用是定义正则表达式的编译表示形式,指定为字符串的正则表达式必须首先被编译为此类的实例,所以被指定为正则表达是的字符串必须遵循一定的格式。
- 正则表达式格式规范:
格式 | 意义 |
---|---|
"x" | 字符x |
"[ ]" | 一定范围 |
"^ [ ]" | 范围外 |
" . " | 通配符,任意单个字符 |
" \ \ 丨 " | 或 |
" \ \ d " | 任意数字,等同于 "[0-9]" |
" \ \ w" | 任意数字字母下划线 "[0-9a-z_A-Z]" |
" X * " | 0次或多次(非1次) |
"X ?" | 0次或1次 |
"X +" | 1次或多次 |
"X { n }" | 正好n次 |
"X { n , }" "X { , n }" | 不少于n次 、 不多于n次 |
"X { m,n }" | 大于等于m次小于等于n次 |
- 根据判断字符串格式
调用pattern类中的matches方法:
boollean b = "string".matches("正则表达式")
返回布尔值则表示格式是否匹配。
正则表达式的分割功能
String类中存在一个方法:
public String[] split (String regex)
作用是将字符串中匹配指定regex正则表达式的部分删除,将字符串分割后转换为一个字符串数组并返回。
-例如:
将字符串"你11111爱22222我33333吗"
分割,规则是正则表达式多个0-9:
public class Test {
public static void main(String[] args) {
String str="你11111爱22222我33333吗";
String[] split = str.split("[0-9]+");
System.out.println(Arrays.toString(split));
}
}
这时我们可以通过遍历分割后的字符串数组,在运用StringBuilder得到一个新的字符串。
与正则相关的替换功能
String类中还存在一个方法:
public String replaceAll(String regex, String replacement)
作用是将字符串中匹配指定正则表达式的部分替换成指定字符串。
- 例如:
将字符串"你11111爱22222我33333吗"
转换成"你爱我吗"
public class Test {
public static void main(String[] args) {
String str="你11111爱22222我33333吗";
String string = str.replaceAll("[0-9]+", "");
System.out.println(string);
}
}
Pattern和Matcher
- Pattern (模式器) 用来封装一个正则表达式
可以通过模式器中的方法,进行数据封装:
public static Pattern compile(String regex)
:
将指定的正则表达式编译到具有给定标志的模式中。public Matcher matcher(CharSequence input)
:
创建匹配指定字符串与此模式的匹配器。
- Matcher (匹配器) 可以封装一个待匹配的数据
可以通过匹配器中的方法,进行匹配:
public boolean find()
:查找待匹配数据中是否有与模式器匹配的元素。public String group()
:返回匹配的字符串。