앞의 문자가 지정 횟수 반복

앞의 문자를 지정한 횟수만큼 반복 한 경우에 일치하는 패턴을 정의하는 방법을 확인합니다.

횟수를 지정

우선 횟수를 지정하는 경우입니다. 형식은 다음과 같습니다.

"X {n}"최장 일치 수량 자 "X {n}?"최단 일치 수량 자 "X {n} +"탐욕 인 수량

"X {n}"는 직전의 문자 인 "X"n 번 나타나는 것에 매치합니다.

예를 들어 패턴 "aX {3} b"가 어떤 대상 문자열의 경우와 일치하는 여부는 다음과 같습니다.

패턴 "aX {3} b" × ab × aXb ○ aXXXb × aXXXXXXb × aYb

일치하는 것은 "aXXXb"가 포함 된 문자열뿐입니다.

지정된 횟수 이상

다음 지정된 횟수 이상 반복되는 경우입니다. 형식은 다음과 같습니다.

"X {n,}"최장 일치 수량 자 "X {n,}?"최단 일치 수량 자 "X {n} +"탐욕 인 수량

"X {n,}"는 직전의 문자 인 "X"가 n 번 이상 나타나는 것에 매치합니다.

예를 들어 패턴 "aX {3,} b"가 어떤 대상 문자열의 경우와 일치하는 여부는 다음과 같습니다.

패턴 "aX {3,} b" × ab × aXb ○ aXXXb ○ aXXXXXXb × aYb

일치하는 것은 "aXXXb"또는 "aXXXXXb"등과 같이 "a"와 "b"사이에 "X"가 3 회 이상 반복되는 문자열 뿐입니다.

범위를 지정

다음 반복 범위를 지정하는 경우입니다. 형식은 다음과 같습니다.

"X {n, m}"최장 일치 수량 자 "X {n, m}?"최단 일치 수량 자 "X {n, m} +"탐욕 인 수량

"X {n, m}"는 직전의 문자 인 "X"n 회 이상 m 회 이하의 회수 나타나는 것에 매치합니다.

예를 들어 패턴 "aX {3,5} b"가 어떤 대상 문자열의 경우와 일치하는 여부는 다음과 같습니다.

패턴 "aX {3,5} b" × ab × aXb ○ aXXXb ○ aXXXXb ○ aXXXXXb × aXXXXXXb × aYb

일치하는 것은 "aXXXb", "aXXXXb", "aXXXXXb"뿐입니다.

구체적으로는 다음과 같이 설명합니다.

String str = "boolean"; String regex = "bo {2,4} l"; Pattern p = Pattern.compile (regex); Matcher m = p.matcher (str); if (m.find ()) { System.out.println ( "일치했습니다."); } else { System.out.println ( "일치하지 않습니다"); }

위의 경우 "b"+ "o"가 2 회 이상 4 회 이하 + "l"하므로 일치합니다.

샘플 프로그램

그럼 실제로 시도합니다.

 

import java.util.regex.Pattern; import java.util.regex.Matcher; class JSample6_1 { public static void main (String args []) { String str1 = "bl"; String str2 = "bol"; String str3 = "bool"; String str4 = "boool"; String str5 = "booool"; String regex1 = "bo {2} l"; Pattern p1 = Pattern.compile (regex1); String regex2 = "bo {2} l"; Pattern p2 = Pattern.compile (regex2); String regex3 = "bo {2,3} l"; Pattern p3 = Pattern.compile (regex3); System.out.println ( "패턴 :"+ regex1); check (p1, str1); check (p1, str2); check (p1, str3); check (p1, str4); check (p1, str5); System.out.println ( "패턴 :"+ regex2); check (p2, str1); check (p2, str2); check (p2, str3); check (p2, str4); check (p2, str5); System.out.println ( "패턴 :"+ regex3); check (p3, str1); check (p3, str2); check (p3, str3); check (p3, str4); check (p3, str5); } private static void check (Pattern p, String target) { Matcher m = p.matcher (target); if (m.find ()) { System.out.println ( "○"+ target); } else { System.out.println ( "×"+ target); } } }

컴파일을 하신 후 실행 해 봅니다.

이 글을 공유하기

댓글

Designed by JB FACTORY