찾기와 매칭
matches, find, lookingAt을 알아봅니다
찾기와 매칭은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
패턴을 적용하는 세 가지 방법
Matcher는 세 가지 핵심 검사를 제공합니다:
matches()는 입력 전체가 일치해야 성공합니다.lookingAt()는 시작 위치에서 일치해야 성공합니다.find()는 어디에서든 일치하는 부분을 검색합니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("42");
System.out.println(m.matches());
}
}matches: 전체 입력
matches는 양쪽 끝에 앵커가 있는 것처럼 문자열 전체가 패턴에 맞을 때만 true를 반환합니다.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("123").matches());
System.out.println(p.matcher("123abc").matches());
}
}lookingAt: 시작 위치에서 일치
lookingAt은 입력이 일치하는 내용으로 시작하면 성공합니다. 뒤에 이어지는 내용이 일치하지 않아도 됩니다.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("123abc").lookingAt());
System.out.println(p.matcher("abc123").lookingAt());
}
}find: 어디에서든 일치
find는 다음 일치 항목을 찾기 위해 앞쪽으로 검색합니다. 현재 위치부터 뒤쪽 어딘가에 일치하는 항목이 있으면 true를 반환합니다.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("abc123def").find());
}
}find로 모든 일치 항목 순회하기
반복문에서 find를 호출하면 입력에 있는 모든 일치 항목을 차례로 확인할 수 있습니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("a1bb22ccc333");
while (m.find()) {
System.out.println(m.group());
}
}
}일치 위치: start와 end
일치에 성공한 뒤 start()와 end()는 인덱스 범위를 제공하고, group()은 일치한 텍스트를 제공합니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("abc123");
if (m.find()) {
System.out.println(m.group() + " at [" + m.start() + "," + m.end() + ")");
}
}
}find와 앵커
^와 $ 앵커를 사용하면 find가 시작 또는 끝 검사를 수행하는 것처럼 동작하게 할 수 있습니다. 여기서 ^\d+는 맨 앞에 있는 숫자만 일치시킵니다.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("^\\d+");
System.out.println(p.matcher("123abc").find());
System.out.println(p.matcher("abc123").find());
}
}Matcher 재설정하기
reset()은 matcher를 처음으로 되돌리므로 동일한 입력을 다시 검색할 수 있습니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("a").matcher("aaa");
int first = 0;
while (m.find()) first++;
m.reset();
int second = 0;
while (m.find()) second++;
System.out.println(first + " " + second);
}
}새 입력에 Matcher 재사용하기
reset(newInput)은 다른 문자열에 동일한 matcher 객체를 재사용하므로 새로운 객체를 할당하지 않아도 됩니다.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("abc");
m.reset("xyz789");
System.out.println(m.find());
System.out.println(m.group());
}
}matches와 find 요약
의도에 따라 선택하십시오. 전체 값(예: 전체 ID)을 검증하려면 matches를 사용하고, 더 큰 텍스트 안에서 일부를 추출하거나 위치를 찾으려면 find를 사용하십시오.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern id = Pattern.compile("[A-Z]{2}\\d{4}");
System.out.println(id.matcher("AB1234").matches());
System.out.println(id.matcher("id=AB1234;").find());
}
}일치 항목 개수 세기
자주 수행하는 작업 중 하나는 발생 횟수를 세는 것입니다. find를 반복 호출하면서 카운터를 증가시키십시오.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("o").matcher("foo boo zoo");
int count = 0;
while (m.find()) count++;
System.out.println(count);
}
}빠른 확인
입력 문자열 전체가 패턴과 일치해야 하는 메서드는 무엇입니까?
복습
일치 항목의 위치를 찾는 방법을 배웠습니다:
matches는 전체 입력을 검사하고,lookingAt은 시작 위치를 검사하며,find는 어디에서든 검색합니다.find를 반복해 모든 일치 항목을 순회하고group,start,end를 읽습니다.reset은 처음으로 되돌리고,reset(input)은 새 텍스트에 matcher를 재사용합니다.
자주 묻는 질문
“찾기와 매칭” 강의는 무료인가요?
네 — “찾기와 매칭” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“찾기와 매칭”에서 뭘 배우나요?
matches, find, lookingAt을 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“찾기와 매칭” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 패턴 컴파일
- 찾기와 매칭
- 캡처 그룹
- 정규 표현식으로 바꾸기