Matcher.lookingAt() 和 find() 之间有什么区别?
我正在看Java正则表达式教程,标题几乎解释了自己。看起来 Matcher.lookingAt() 正在尝试匹配整个字符串。这是真的吗?
我正在看Java正则表达式教程,标题几乎解释了自己。看起来 Matcher.lookingAt() 正在尝试匹配整个字符串。这是真的吗?
Matcher.lookingAt 的文档清楚地解释了该区域尝试匹配的区域:lookingAt
与方法一样,此方法始终从区域的开头开始;与该方法不同,它不需要匹配整个区域。
matches
所以不,不需要匹配整个字符串。那么 和 之间有什么区别呢?来自 Matcher Javadoc 概述:lookingAt
lookingAt
find
- 该方法尝试将整个输入序列与模式进行匹配。
matches
- 该方法尝试将输入序列(从头开始)与模式进行匹配。
lookingAt
- 该方法扫描输入序列,查找与模式匹配的下一个子序列。
find
lookingAt
始终从头开始,但会扫描起始位置。find
从另一种方式来看,有一个固定的开始和结束,有一个固定的开始但一个可变的结束,并且有一个可变的开始和结束。matches
lookingAt
find
lookingAt()
始终从头开始检查,并在遇到匹配项时返回。true
find()
可以找到多个匹配项,因为它存储其当前位置,非常像迭代器。
关于 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#find%28%29:find()
此方法从此匹配器区域的开头开始,或者,如果该方法的先前调用成功并且此后未重置匹配器,则从第一个字符开始,该字符与前一个匹配项不匹配。