본문 바로가기

카테고리 없음

단일 문자 (.)

메타 문자의 하나 인 점 "."을 패턴에 설명하면 줄 끝 기호를 제외한 모든 단일 문자와 일치합니다.

형식은 다음과 같습니다.

 

"."

 

메타 문자 "."는 반복이 아닌 문자 클래스의 하나이지만, 설명의 형편 상 여기에 나와 있습니다.

사용 예는 다음과 같습니다.

 

"ab.cd"

 

위의 경우 점 (.)는 단일 문자에 해당하므로 "abfcd"또는 "ab0cd"등 점 (.)이 기술 된 위치에 어떤 문자 (줄 끝 기호는 제외)이 적혀있는 경우도 일치하는 것입니다.

 

주의 할 점으로는 단일 문자이므로 반드시 글자 필요합니다. 따라서 "abcd"처럼 "ab"와 "cd"사이에 문자가 존재하지 않는 것이나, "abeecd"처럼 "ab"와 "cd"사이에 두 개 이상의 문자가 포함 된 경우 일치하지 않습니다.

 

○ abhcd

○ ab4cd

○ ab # cd

× abcd

× abppcd

 

"."는 패턴에서 여러 번 사용할 수 있으므로 다음과 같이 설명 할 수 있습니다.

 

"ab..cd"

 

위의 경우 "ab"와 "cd"사이에 임의의 두 문자가있는 문자열과 일치합니다. (예 : abomcdd).

 

"abcd"

 

위의 경우에 "a", "b", "c", "d"의 각 문자 사이에 하나의 문자가있는 문자열과 일치합니다. (예 : a1b2c3d).

 

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

 

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

위의 경우는 일치합니다.

DOTALL 모드

기본적으로 "."는 줄 끝 기호와 일치하지 않지만 DOTALL 모드를 활성화하면 "."는 줄 끝 기호와 일치하게됩니다.

구체적인 예로 생각해보십시오. 패턴을 "bc"하면 기본적으로 "ab ¥ ncd"는 일치하지 않지만 DOTALL 모드를 사용하면 일치하는 것입니다.

 

기본 상태 :

× ab ¥ ncd

DOTALL 모드 활성화 :

○ a b ¥ nc d

 

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

String str = "ab ¥ ncd"; String regex = "bc"; Pattern p = Pattern.compile (regex, Pattern.DOTALL); Matcher m = p.matcher (str); if (m.find ()) { System.out.println ( "일치했습니다."); } else { System.out.println ( "일치하지 않습니다"); }

샘플 프로그램

그럼 실제로 시도합니다.

 

import java.util.regex.Pattern; import java.util.regex.Matcher; class JSample1_1 { public static void main (String args []) { String str1 = "abcd"; String str2 = "abMcd"; String str3 = "abKMcd"; String str4 = "ab ¥ ncd"; String regex1 = "bc"; Pattern p1 = Pattern.compile (regex1); String regex2 = "bc"; Pattern p2 = Pattern.compile (regex2, Pattern.DOTALL); System.out.println ( "패턴 :"+ regex1); check (p1, str1); check (p1, str2); check (p1, str3); check (p1, str4); System.out.println ( "¥ nDOTALL 모드로 변경 ¥ n"); System.out.println ( "패턴 :"+ regex2); check (p2, str1); check (p2, str2); check (p2, str3); check (p2, str4); } 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); } } }

 

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

기본 상태입니다 그리고 "."는 줄 끝 기호와 일치하지 않지만 DOTALL 모드를 사용하면 줄 끝 기호와 일치하고있는 것을 확인할 수 있습니다.