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

时间:2015-05-02 22:52:27

标签: java regex

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

2 个答案:

答案 0 :(得分:21)

documentation for Matcher.lookingAt清楚地解释了lookingAt尝试匹配的区域:

  

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

所以不,lookingAt不需要匹配整个字符串。那么lookingAtfind之间的区别是什么?来自Matcher Javadoc overview

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

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

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

答案 1 :(得分:1)

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

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

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

  

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