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

Java 정규 표현식 re{n} 메타 문자 – 정확한 반복 횟수 매칭 방법


정규 표현식의 하위 표현식이자 메타 문자인 re{n}은 바로 앞에 있는 표현식이 정확히 n번 반복되는 경우에만 일치(match)합니다. 여기서 n은 원하는 반복 횟수를 지정하는 숫자입니다.

예제 1: 기본 사용법

아래 예제는 패턴 to{1}을 사용하여 문자열 "Welcome to Tutorialspoint" 안에서 일치하는 횟수를 세는 프로그램입니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      String regex = "to{1}";
      String input = "Welcome to Tutorialspoint";
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(input);
      int count = 0;
      while(m.find()) {
         count++;
      }
      System.out.println("일치 횟수: "+count);
   }
}

실행 결과

일치 횟수: 2

문자열 "Welcome to Tutorialspoint"에는 "to"가 두 번 등장합니다(독립된 단어 "to"와 "Tutorialspoint" 내부의 "to"). 따라서 일치 횟수는 2가 출력됩니다.

예제 2: 두 자리 나이 입력 검증

다음 Java 프로그램은 사용자로부터 나이 값을 입력받으며, 정확히 두 자리 숫자만 허용합니다. 패턴 \d{2}는 숫자(\d)가 정확히 2번 연속으로 나타나는 경우에만 일치합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      String regex = "\d{2}";
      System.out.println("나이를 입력하세요:");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(input);
      if(m.matches()) {
         System.out.println("나이 값이 승인되었습니다");
      } else {
         System.out.println("나이 값이 승인되지 않았습니다");
      }
   }
}

실행 결과 1

나이를 입력하세요:
25
나이 값이 승인되었습니다

실행 결과 2

나이를 입력하세요:
2252
나이 값이 승인되지 않았습니다

실행 결과 3

나이를 입력하세요:
twenty
나이 값이 승인되지 않았습니다

참고: matches() 메서드는 입력 문자열 전체가 패턴과 일치해야만 true를 반환합니다. 따라서 네 자리 숫자인 "2252"처럼 자릿수가 초과된 입력이나, 문자가 포함된 "twenty" 같은 입력은 패턴 \d{2}와 일치하지 않아 거부됩니다.