ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규식 사용법
    Java 2023. 8. 18. 23:03

    정규식 기본 기호

    기호 설명 예제
    . 임의의 문자 1개를 의미  
    ^ 시작을 의미한다
    [] 괄호 안에 있다면 일치하지 않는 부정의 의미로 쓰인다
    ^a : a로 시작하는 단어
    [^a] : a가 아닌 철자인 문자 1개
    $ $앞의 문자열로 문자가 끝나는지를 의미 a$ : a로 끝나는 단어
    [] [] 괄호 안의 문자가 있는지를 확인한다 [ab][cd] : a, b 중 한 문자와 c, d 중 한 문자
    -> ac ad bc bd
    [^] [] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함
    - 대괄호 안에 ^ 가 쓰이면 제외의 뜻
    - 대괄호 밖에 ^ 가 쓰이면 시작점의 뜻
    [^a-z] : 알파벳 소문자 a부터 z까지를 제외한 모든 문자
    - 사이의 문자 혹은 숫자를 의미한다 [a-z] : 알파벳 소문자 a부터 z까지 하나
    [a-z0-9] : 알파벳 소문자 전체, 0~9 중 한 문자
    | 또는 [a|b] : a 혹은 b
    () 그룹 01(0|1) : 01뒤에 0 또는 1이 들어간다
    -> 010(o), 011(o), 012(x)
    {} 개수 a{3}b : a가 3번 온 후 b가 온다
    -> aab(x), aaab(o), aaaab(o)
    \b 공백, 탭, ",", "/" 등을 의미한다. apple\b : apple뒤에 공백, 탭 등이 있다
    -> apple juice(o), apple.com(x)
    \B \b의 부정
    공백 탭 등이 아닌 문자인 경우 매치한다.
    apple\B
    -> apple.com(o)
    \d 0~9 사이의 숫자
    [0~9]와 동일
     
    \D \d의 부정
    숫자가 아닌 어떤 문자, [^0-9]와 동일
     
    \s 공백, 탭  
    \S 공백, 탭이 아닌 문자  
    \w 알파벳 대소문자 + 숫자 + "_"
    [a-zA-Z_0-9]와 동일
     
    \W \w의 부정
    [^a-zA-Z_0-9]
     

     

    정규식 수량 기호

    기호 설명 예제
    ? 앞의 표현식이 없거나 최대 한개만 a1? : 1이 최대 한개만 있거나 없을 수도 있다
    * 앞의 표현식이 없거나 있거나 (여러개) a1* : 1이 있을 수도 없을 수도 있다
    + 앞의 표현식이 1개 이상 여러개 a1+ : 1이 1개 이상있다
    {n} 딱 n개 a{3} : a가 딱3개 있다
    {n, m} n개 이상 m개 이하 a{3, 5} : a가 3개 이상 5개 이하 있다
    {n,} n개 이상 a{3,} : a가 3개 이상 있다

     

    정규식 그룹 캡쳐 기호

    기호 설명
    () 그룹 및 캡쳐
    (?:) 찾지만 그룹에 포함 안 됨
    (?=) =앞 문자를 기준으로 전방 탐색
    (?<=) =뒤 문자를 기준으로 후방 탐색

     

    자주 사용되는 정규식 샘플

    정규 표현식 설명
    ^[0-9]*$ 숫자
    ^[a-zA-Z]*$ 영문자
    ^[가-힣]*$ 한글
    \\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail
    ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호
    ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호
    \d{6}\-[1-4]\d{6} 주민등록번호
    ^\d{3}-\d{2}$ 우편번호

     

     

    가장 앞 문자가 숫자인지 체크

    Boolean ex1 = Pattern.matches("[0-9].*", "people");
    Boolean ex2 = Pattern.matches("[0-9].*", "3people");
    Boolean ex3 = Pattern.matches("[0-9].*", "people3");
    
    System.out.println(ex1); // false
    System.out.println(ex2); // true
    System.out.println(ex3); // false

     

    모든 문자가 숫자인지 체크

    Boolean ex1 = Pattern.matches("[0-9]*$", "123");
    Boolean ex2 = Pattern.matches("[0-9]*$", "12p3");
    
    System.out.println(ex1); // true
    System.out.println(ex2); // false

     

     

    출처 : https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%95%EA%B7%9C%EC%8B%9DRegular-Expression-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

     

    ☕ 자바 정규식(Regular Expression) 사용법 💯 정리

    정규표현식 이란 정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성

    inpa.tistory.com

    'Java' 카테고리의 다른 글

    Optional 클래스  (0) 2023.09.08
    String, StringBuffer, StringBuilder  (0) 2023.08.31
    Iterator, Enumeration 인터페이스  (0) 2023.06.30
    Set  (0) 2023.06.27
    List  (0) 2023.06.27
Designed by Tistory.