Ce face Matcher
Un Matcher se obține din pattern.matcher(text) și ține minte poziția în text și ultima potrivire. Cu el verifici (matches), cauți (find), extragi părți (group, start, end) și înlocuiești (replaceAll).
matches() returnează true doar dacă tot textul respectă modelul. lookingAt() cere potrivirea doar la început. După un matches() reușit, poți citi grupurile din paranteze cu group(n).
Un Matcher nu este sigur pentru mai multe fire de execuție. Pattern-ul se poate împărți, dar fiecare fir își creează propriul Matcher.
Ce returnează
matches și lookingAt returnează boolean.
Exemple
Exemplul 1: Validarea unei date și citirea părților ei
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern data = Pattern.compile("(\\d{2})\\.(\\d{2})\\.(\\d{4})");
for (String text : new String[]{"01.12.2026", "1.12.2026", "01.12.2026 ora 10"}) {
Matcher m = data.matcher(text);
if (m.matches()) {
System.out.println(text + ": zi " + m.group(1) + ", lună " + m.group(2) + ", an " + m.group(3));
} else {
System.out.println(text + ": format greșit");
}
}
}
}
Rezultat
01.12.2026: zi 01, lună 12, an 2026
1.12.2026: format greșit
01.12.2026 ora 10: format greșit
Exemplul 2: matches față de lookingAt
Textul începe cu un cod de județ, dar continuă. lookingAt acceptă, matches nu.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("[A-Z]{2}").matcher("IS-12-ABC");
System.out.println("matches: " + m.matches());
System.out.println("lookingAt: " + m.lookingAt());
System.out.println("găsit: " + m.group());
}
}
Rezultat
matches: false
lookingAt: true
găsit: IS
Greșeli frecvente
- Apelezi
group()înainte dematches()/find()sau după un rezultatfalse:IllegalStateException: No match found. - Folosești
matches()ca să afli dacă textul conține modelul. Pentru asta efind().
Comenzi înrudite
Pattern: O expresie regulată compilată; compile o pregătește o dată, matcher o aplică pe un text ca să cauți potriviri.Matcher.find: find caută următoarea potrivire în text; group returnează textul găsit sau doar partea dintr-un grup (paranteze).Matcher.start: start dă poziția unde începe ultima potrivire, iar end poziția imediat după ea (ca la substring).Matcher.replaceAll: Înlocuiește toate potrivirile din text; în înlocuire $1 reprezintă grupul 1, iar varianta cu funcție calculează textul nou.Matcher.results: Returnează toate potrivirile ca Stream<MatchResult>, ca să le prelucrezi cu map, filter, toList în loc de o buclă cu find.