I am looking at Java regex tutorial, the title pretty much explains itself. It looks like Matcher.lookingAt() is trying to match the entire String. Is that true?
2 Answers
The documentation for Matcher.lookingAt clearly explains the region lookingAt
tries to match:
Like the
matches
method, this method always starts at the beginning of the region; unlike that method, it does not require that the entire region be matched.
So no, lookingAt
does not require matching the whole string. Then what's the difference between lookingAt
and find
? From the Matcher Javadoc overview:
- The
matches
method attempts to match the entire input sequence against the pattern.- The
lookingAt
method attempts to match the input sequence, starting at the beginning, against the pattern.- The
find
method scans the input sequence looking for the next subsequence that matches the pattern.
lookingAt
always starts at the beginning, but find
will scan for a starting position.
Viewed another way, matches
has a fixed start and end, lookingAt
has a fixed start but a variable end, and find
has a variable start and end.

- 13,313
- 16
- 79
- 92
-
Thanks the details are nice! :) Also Using the matches and lookingAt Methods of the tutorial also touches this topic: https://docs.oracle.com/javase/tutorial/essential/regex/matcher.html – Yibin Lin May 02 '15 at 23:52
lookingAt()
always starts checking from the beginning, and returns true
when it comes across a match.
find()
can find multiple matches, because it stores its current position, much like an iterator.
About find()
from http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#find%28%29:
This method starts at the beginning of this matcher's region, or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match.

- 830
- 1
- 5
- 12