자바의 java.util.regex 패키지는 문자 시퀀스에서 특정 패턴을 찾기 위한 다양한 클래스를 제공합니다. 이 패키지의 Pattern 클래스는 정규식(regular expression)이 컴파일된 형태를 나타냅니다.
주어진 입력 문자열에서 특정 문자를 매칭하려면 다음 단계를 따르세요.
매칭 절차
입력 문자열을 준비합니다.
Pattern 클래스의 compile() 메서드는 정규식을 나타내는 문자열과 플래그(flag)를 나타내는 정수값을 인수로 받아 Pattern 객체를 반환합니다. 다음 두 가지를 전달하여 정규식을 컴파일합니다.
대괄호 패턴 [ ] 안에 찾고자 하는 문자를 넣은 정규식, 예: "[t]"
대소문자를 구분하지 않도록 하는 CASE_INSENSITIVE 플래그
Pattern 클래스의 matcher() 메서드는 입력 문자열을 받아 Matcher 객체를 반환합니다. 이 메서드를 사용해 Matcher 객체를 생성합니다.
find() — Matcher 객체의 find() 메서드를 호출하여 문자열 내에서 해당 패턴과 일치하는 부분을 찾습니다.
예제 코드
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompileExample {
public static void main( String args[] ) {
//문자열 입력 받기
Scanner sc = new Scanner(System.in);
System.out.println("Enter input string");
String input = sc.nextLine();
//특정 문자(t)를 찾기 위한 정규식
String regex = "[t]";
//대소문자 구분 없이 정규식 컴파일
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
//Matcher 객체 생성
Matcher matcher = pattern.matcher(input);
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println("Number of matches: "+count);
}
}실행 결과
Enter input string Tutorialspoint Number of matches: 3
위 예제에서는 입력 문자열 "Tutorialspoint"에 포함된 소문자 't'와 대문자 'T'를 모두 세어 총 3개의 일치 항목을 찾았습니다. CASE_INSENSITIVE 플래그 덕분에 대소문자와 관계없이 지정한 문자를 매칭할 수 있습니다.