Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 정규식으로 대소문자 구분 없이 문자열 내 특정 문자 매칭하기

자바의 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 플래그 덕분에 대소문자와 관계없이 지정한 문자를 매칭할 수 있습니다.