Matcher.lookingAt()和find()之间有什么区别?

Yib*_*Lin 8 java regex

我正在看Java正则表达式教程,标题几乎解释了自己.看起来像Matcher.lookingAt()试图匹配整个String.真的吗?

Jef*_*oom 24

Matcher.looking文档清楚地解释了该区域lookingAt试图匹配:

matches方法一样,此方法始终从区域的开头开始; 与该方法不同,它不需要匹配整个区域.

所以不,lookingAt不需要匹配整个字符串.那么lookingAt和之间的区别是find什么?来自Matcher Javadoc概述:

  • matches方法尝试将整个输入序列与模式匹配.
  • lookingAt方法尝试将输入序列(从头开始)与模式匹配.
  • find方法扫描输入序列,寻找与模式匹配的下一个子序列.

lookingAt始终find从头开始,但会扫描起始位置.

从另一个角度来看,matches具有固定的开始和结束,lookingAt具有固定的开始但是变量结束,并且find具有变量的开始和结束.


Mar*_*M J 5

lookingAt()总是从头开始检查,并true在遇到匹配时返回。

find()可以找到多个匹配项,因为它存储其当前位置,很像迭代器。

关于http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#find%28%29find()

此方法从此匹配器区域的开头开始,或者,如果该方法的先前调用成功并且此后匹配器尚未重置,则从前一个匹配不匹配的第一个字符开始。