정규 표현식의 하위 표현식이자 메타 문자인 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}와 일치하지 않아 거부됩니다.