정규식을 사용한 패턴 매칭
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챌린지
쉬움findWords라는 이름의 메서드를 만들고 다음 두 인수를 받도록 하세요:
- 검색할 대상인 String (
text) - 찾을 대상인 String (
word)
메서드는 다음을 수행해야 합니다:
- Pattern과 Matcher를 사용하여 해당 단어의 모든 출현 위치를 찾습니다
- 단어가 발견된 위치를 포함하는 문자열을 반환합니다
- 위치는 공백으로 구분해야 합니다
반환 메시지는 다음과 같아야 합니다:
- 입력 중 하나라도 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));
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Java 컴파일러
내 텍스트로 패턴 테스트하기: 정규식 테스터