본문 바로가기
java

[정규표현식과 Pattern]

by proudev 2023. 3. 14.

정규식


Character classes

   설명 
 \d   한개의 숫자 0-9
 \s   빈 공백
 \w   알파벳 대소문자 or 숫자 or _ 3 중 하나, [a-zA-Z_]와 동일함
 \D   한개의 숫자가 아닌 나머지 모든 것, [ ^\d ] 와 동일함
 \S   공백이 아닌 모든 것 , [ ^\s ]와 동일함
 \W   알파벳 대소문자 or 숫자 or _ 아닌 모든 것 , [ ^a-zA-Z0-9_] 와 동일함
 \   특수문자가 아닌 경우, 예) \ . 이렇게 설정하면 마침표로 인식함
 .   모든 문자(공백 포함)

Groups and ranges

  설명
 |   또는, 예) a|b 는 a 또는 b , (ab|bc) 는 ab 또는 bc
 ()   그룹을 나눔 (https://[a-z])? ,https://[a-z] 패턴이 하나의 그룹이됨. 1개 또는 0개 일때,
 [   괄호안에 어떤 문자든 가능, 예) [a-z] a부터 z까지 모든 알파벳 일치하는 경우
 [^]   부정 문자셋, 괄호 안에 있는 문자 이외에 모든 것(부정), 예) [ ^abc ] a,b,c중 아닌 것만!
 (?:)   그룹을 만들때 사용하며 해당 패턴을 찾지만 기억하지 않음 (?:https://[a-z]) , https://[a-z]찾지만 그룹 형태로 기억하지 않음

Quantifiers

  설명
 ?   없거나 1개 있거나 (0,1)개, 예) abc? ab에서 c가 없거나 있거나! , ab()
 *   없거나 있거나 0개 포함 그 이상
 +   1개 이상
 {3}   정확히 딱 3개만 , 예시: [a-z]{3} , a부터 z 중 3개 / abc, sdf, wed
 {3,}   3개 이상, 예시: [a-z]{3,} , a부터 z 중 3개 이상 / abc, abcd , sdfbcdefg
 {2,3}   2개이상 3개 미만: [A-Z]{2,3} , A부터 Z 중 2개 이상 3개 미만 / QWD, ERF, SW, WW

 Boundary-type 

  설명
 \b   단어 경계, 예를 들어 \bYa 했을때 YaYaYa 에서는 앞에 단어 처음 두글자 Ya만 인식함.
 \B   단어 경계 아닌 부분 \BYa 했을때 YaYaYa에서는 앞에 단어 둘 글자 제외하고 뒤에서 부터 찾음YaYa(O)
 ^   문장의 시작, 예) ^abc는 abc로 시작한 문자 찾아줌 abc(O) , qwerabc(X)
 $   문장의 끝, 예) ^abc[a-z]{3}$ , abc로 시작하고 a부터z까지 중 3개로 끝나는 것 ex) abcaee(O), abca(X)



Java에서 Pattern 클래스 사용한 정규표현식 활용


    String regExp="(02|010)-\\d{3,4}-\\d{4}";//전화번호 정규식
    // 정규식 패턴, \d에서 \를 인식할 수 있도록 \ 하나 더 붙여줌--> \\d;
    String data="010-123-4567"; 
    boolean result=Pattern.matches(regExp, data);
    //Pattern 클래스의 matches(정규식패턴, 문자열)를 사용해서 패턴과 일치하면 true 아니면 false 출력함

    if(result) {
        System.out.println("정규식과 일치합니다");
    }else {
        System.out.println("정규식과 일치하지 않습니다");
    }

    regExp="\\w+@\\w+\\.\\w+(\\.\\w+)?";//이메일 정규식
    /*   \\w+@ 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상과 @ 포함
     *   \\w+\\. 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상과 . 포함
     *   \\w+ 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상
     *   (\\.\\w+)? 그룹 1: \\.\\w+  .포함 알파벳 대소문자 또는 숫자 또는 _ 1개 이상을 포함한 그룹 1이 있거나 없거나  
     *   
     * */   
     data="asdf123@naver.com";
     result=Pattern.matches(regExp, data);
    if(result) {
        System.out.println("정규식과 일치합니다");
    }else {
        System.out.println("정규식과 일치하지 않습니다");
    }



참고자료
https://www.youtube.com/watch?v=t3M6toIflyQ&t=1139s
https://www.youtube.com/watch?v=1BTGSVhNDu8

'java' 카테고리의 다른 글

[java] 배열  (0) 2023.08.12
[java] 조건문, 반복문  (0) 2023.08.10
[java] 연산자  (0) 2023.03.11
[Java: 변수]  (0) 2023.03.08
[Java 의 특징]  (0) 2023.03.06

댓글