前言
pattern (模式) 与 matcher (匹配) 都属于java.util.regex包下,搭配使用实现对字符序列的检索和正则表达式匹配。
Pattern类
1、compile(String regex)
使用正则表达式regex做参数得到一个称为模式的Pattern类的实例对象
public static void main(String[] args) {
//正则表达式 匹配一个0-9数字
String regex = "\\d";
//测试文本
String testStr = "1h2k3h2uada7s66eys7";
//使用regex做参数,得到一个称为模式的Pattern类的实例对象
Pattern pattern = Pattern.compile(regex);
}
matches(String regex, CharSequence input)
判断文本是否被正则表达式全匹配
public static void main(String[] args) {
//正则表达式 匹配一个0-9数字
String regex = "\\d";
//输入文本
String input= "6";
//判断文本是否被正则表达式全匹配 返回true
System.out.println(Pattern.matches(regex, input));
}
Matcher类
public boolean find()
循环判断是否能匹配下一个子序列
寻找 input(输入的字符串序列) 和 regex(正则表达式) 匹配的下一子序列,成功返回 true
搭配使用:
调用 start() 方法和 end() 方法:获取该子字符序列的开始位置和结束位置
调用 group() 方法:返回本次检索到的匹配模式的子字符序列
public boolean find(int start)
判断 input 从参数 start 指定位置开始是否有和 regex 匹配的子字符序列
public boolean lookingAt()
判断从 input 的开始位置是否有和 regex 匹配的子字符序列
public boolean matches()
判断 input 是否完全和 regex 匹配
public String replaceAll(String replacement)
返回一个将匹配模式的子字符序列全部替换为replacement指定的字符序列的字符串
注意:replacement本身不受影响
public String replacFirst(String replacement)
返回一个将第一个匹配到的子字符序列替换为replacement字符序列的字符串
代码演示
public static void main(String[] args) {
String regex = "\\d";//0-9数字
String input = "测试长文本1h2k3h2uada7s66eys7";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
/**
* find(int start) 查找是否存在匹配
*/
while (matcher.find()){
System.out.println(matcher.group());
}
//将测试文本中的数字全改为6
System.out.println(matcher.replaceAll("6"));
//将测试文本中的第一个数字改为6
System.out.println(matcher.replaceFirst("6"));
}
输出