Menu
CoddyTech

정규식을 사용한 패턴 매칭

Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨. 59개 중 47번째.

Pattern 및 Matcher 클래스는 Java에서 정규식 작업을 위한 강력한 도구를 제공합니다. 먼저 이를 사용하는 방법을 알아보겠습니다.

Pattern.compile()을 사용하여 pattern을 생성하세요:

Pattern pattern = Pattern.compile("cat");
// "cat"을 찾기 위한 패턴을 생성합니다

텍스트를 위한 matcher를 생성하세요:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// 텍스트에 대한 매처를 생성합니다

이제 matcher.find()를 사용하여 일치하는 항목을 찾을 수 있습니다:

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

위 코드를 실행하면 출력은 다음과 같습니다: Found at: 4

메서드 이해하기:

  • matcher.find() - 텍스트에서 패턴의 다음 출현을 검색합니다
    • 일치하는 항목을 찾으면 true를 반환합니다
    • 더 이상 일치하는 항목이 없으면 false를 반환합니다
    • 이것이 모든 출현을 찾기 위해 모두 찾을 때 while 루프에서 사용하는 이유입니다
  • matcher.start() - find()가 찾은 마지막 일치 항목의 시작 인덱스(위치)를 반환합니다
    • 이 예제에서 "cat"은 "The cat and dog"의 인덱스 4에서 시작합니다
    • 성공적으로 find()를 호출한 후에 호출해야 합니다

여러 일치 항목이 있는 예:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// 출력:
// 발견 위치: 0
// 발견 위치: 8
challenge icon

챌린지

쉬움

findWords라는 이름의 메서드를 만들고 다음 두 인수를 받도록 하세요:

  1. 검색할 대상인 String (text)
  2. 찾을 대상인 String (word)

메서드는 다음을 수행해야 합니다:

  1. Pattern과 Matcher를 사용하여 해당 단어의 모든 출현 위치를 찾습니다
  2. 단어가 발견된 위치를 포함하는 문자열을 반환합니다
  3. 위치는 공백으로 구분해야 합니다

반환 메시지는 다음과 같아야 합니다:

  • 입력 중 하나라도 null인 경우: "Invalid input"을 반환합니다
  • 단어를 찾지 못한 경우: "Not found"를 반환합니다
  • 찾은 경우: 위치를 반환합니다(예: "4 10 15")

직접 해보기

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static String findWords(String text, String word) {
        // 여기에 코드를 작성하세요
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Java 컴파일러

내 텍스트로 패턴 테스트하기: 정규식 테스터