Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';Matcher.lookingAt()和find()之间的区别是什么?_Java_Regex - Fatal编程技术网

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

Java 什么';Matcher.lookingAt()和find()之间的区别是什么?,java,regex,Java,Regex,我正在看Java正则表达式教程,这个标题很好地解释了它本身。看起来Matcher.lookingAt()正在尝试匹配整个字符串。这是真的吗?lookingAt()总是从一开始就开始检查,并在遇到匹配时返回true find()可以找到多个匹配项,因为它存储其当前位置,很像迭代器 关于find()from: 此方法从该匹配器区域的开始处开始,或者,如果先前成功调用了该方法并且此后未重置匹配器,则从第一个未与先前匹配匹配的字符开始 这清楚地解释了lookingAt尝试匹配的区域: 与匹配方法一样,此

我正在看Java正则表达式教程,这个标题很好地解释了它本身。看起来Matcher.lookingAt()正在尝试匹配整个字符串。这是真的吗?

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

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

关于
find()
from:

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

这清楚地解释了
lookingAt
尝试匹配的区域:

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

所以不,
lookingAt
不需要匹配整个字符串。那么
lookingAt
find
之间有什么区别呢?从:

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

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


从另一个角度看,
matches
有一个固定的开始和结束,
lookingAt
有一个固定的开始但有一个可变的结束,
find
有一个可变的开始和结束。

谢谢,细节很好!)此外,使用本教程中的匹配和查找方法也涉及此主题: