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

Java 정규식(Regex)으로 고정된 문자 집합을 일치시키는 방법 완벽 가이드

Java 정규식에서 문자 클래스(Character Class)를 사용하면 고정된 문자 집합 중 하나의 문자와 일치시킬 수 있습니다. 대괄호 [] 안에 일치시키고 싶은 문자들을 나열하면 되는데, 이는 매우 유용한 패턴 매칭 기법입니다.

문자 클래스의 기본 문법

  • [tmp] — 문자 t, m, p 중 하나와 일치합니다.
  • [^tp] — t와 p를 제외한 모든 문자와 일치합니다. 즉, ^(캐럿) 기호는 부정(negation)을 의미합니다.

주요 특징

  • 문자 클래스는 항상 단일 문자와만 일치합니다.
  • 대괄호 안에서 하이픈(-)을 사용하면 범위를 지정할 수 있습니다. 예: [a-z], [0-9]
  • ^가 대괄호 맨 앞에 오면 해당 집합에 포함되지 않는 문자를 의미합니다.

예제 1: 특정 문자(t, m, p)의 출현 횟수 세기

다음 예제는 사용자로부터 문자열을 입력받아, 정규식 [tmp]를 사용해 문자 t, m, p가 몇 번 등장하는지 계산합니다.

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

public class Example {
   public static void main(String args[]) {
      // 사용자로부터 문자열 입력 받기
      System.out.println("문자열을 입력하세요");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();

      // 문자 t 또는 m 또는 p와 일치하는 정규식
      String regex = "[tmp]";

      // 정규식 컴파일
      Pattern pattern = Pattern.compile(regex);

      // Matcher 객체 생성
      Matcher matcher = pattern.matcher(input);

      int count = 0;
      while(matcher.find()) {
         count++;
      }
      System.out.println("출현 횟수: " + count);
   }
}

실행 결과

문자열을 입력하세요
hello how are you welcome to tutorialspoint
출현 횟수 : 6

입력된 문자열에서 t, m, p에 해당하는 문자가 총 6번 발견되었습니다.

예제 2: 특정 문자 집합을 제외한 문자 세기

이번에는 부정 문자 클래스 [^abcdef]를 사용하여, 알파벳 a~f에 포함되지 않는 문자의 개수를 세어 보겠습니다.

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

public class Example {
   public static void main(String args[]) {
      // 사용자로부터 문자열 입력 받기
      System.out.println("문자열을 입력하세요");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();

      // a~f를 제외한 문자와 일치하는 정규식
      String regex = "[^abcdef]";

      // 정규식 컴파일
      Pattern pattern = Pattern.compile(regex);

      // Matcher 객체 생성
      Matcher matcher = pattern.matcher(input);

      int count = 0;
      while(matcher.find()) {
         count++;
      }
      System.out.println("출현 횟수 :" + count);
   }
}

실행 결과

문자열을 입력하세요
Hello how are you welcome to tutorialspoint
출현 횟수 : 36

a부터 f까지의 문자를 제외한 나머지 문자(공백과 특수문자 포함)가 총 36번 일치했습니다.

정리

  • [문자들]: 대괄호 안의 문자 중 하나와 일치
  • [^문자들]: 대괄호 안의 문자를 제외한 하나의 문자와 일치
  • Pattern.compile()로 정규식을 컴파일하고, matcher()로 Matcher 객체를 얻은 뒤, find() 메서드를 반복 호출하며 일치 횟수를 셀 수 있습니다.

문자 클래스를 활용하면 복잡한 반복문 없이도 간결하고 효율적으로 문자 검증 및 필터링 로직을 구현할 수 있습니다.