메타 문자의 하나 인 점 "."을 패턴에 설명하면 줄 끝 기호를 제외한 모든 단일 문자와 일치합니다.
형식은 다음과 같습니다.
"."
메타 문자 "."는 반복이 아닌 문자 클래스의 하나이지만, 설명의 형편 상 여기에 나와 있습니다.
사용 예는 다음과 같습니다.
"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 모드를 사용하면 줄 끝 기호와 일치하고있는 것을 확인할 수 있습니다.