Java的Matcher对象有三种方法能够实现对目标串的正则匹配,分别是find,matches和lookingAt ,他们各有不同:
matches对整个目标串进行匹配,如果目标串和模式串不能完全匹配,返回false,注意这里面是对完整的串而言,部分含有也是不可以的
find和lookingAt类似,都是判断目标串是否含有模式串,它们的区别是find在找到一个合法的匹配之后会继续停留在这个位置等待下一步指令;lookingAt则是返回目标串的起始位置,所以每次调用start方法都会返回0(因为返回了起始位置)
reset则有两种形式,接收参数的版本和无参数的版本,有参数的会把输入的字符串当作新的目标串进行匹配,而无参数的会返回当前目标串的起始位置(复位),下面用到了第二种形式
一个简单的测试代码:
1 public class test22 { 2 public static void main(String[] args){ 3 String line = "ABCDEFG666dABC"; 4 String pattern = "ABC"; 5 Pattern r = Pattern.compile(pattern); 6 Matcher m = r.matcher(line); 7 System.out.println("Test1"); 8 System.out.println(m.matches()); 9 //System.out.println(m.start()); 10 System.out.println("Test2"); 11 System.out.println(m.lookingAt()); 12 System.out.println(m.start()); 13 System.out.println(m.lookingAt()); 14 System.out.println(m.start()); 15 System.out.println("Test3"); 16 m.reset(); 17 System.out.println(m.find()); 18 System.out.println(m.start()); 19 System.out.println(m.find()); 20 System.out.println(m.start()); 21 } 22 }
结果如下:
Test1
false
Test2
true
0
true
0
Test3
true
0
true
11