Java正则匹配:find,matches和lookingAt 的简单辨析

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

猜你喜欢

转载自www.cnblogs.com/owczhlol/p/12926609.html