0Pricing
Java Academy · 강의

찾기와 매칭

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 패턴 컴파일
  2. 찾기와 매칭
  3. 캡처 그룹
  4. 정규 표현식으로 바꾸기
← Java Academy(으)로 돌아가기