Blog

Regex 정규표현식

[] #

[ ] 사이의 문자들과 매치` 라는 의미를 가지며, [ ]사이에는 어떤 문자도 들어갈 수 있다.

  • [abc] 라는 표현식은 "a, b, c중 한 개의 문자와 매치"를 의미한다.
  • [abc] == a?+b?+c?
    • "a"는 정규식에 a가 있으므로 매치
    • "before”b가 있으므로 매치
    • "dude"a, b, c중 어느 하나라도 포함하고 있지 않으므로 매치되지 않는다.

- #

하이픈(-)은 두 문자 사이의 범위를 의미한다.

  • [a-zA-Z] == a~z && A~Z 모든 알파벳을 매치
  • [0-9] == 0~9 모든 숫자를 매치

^ #

캐럿(^)은 반대를 의미한다.

  • [^0-9] == !(0~9)를 의미하는 것으로 숫자가 아닌 문자만 매치

\ #

역슬래시(\)는 정규식 상에 특별한 의미가 있는 문자들을 문자그대로 사용할때 사용한다. [0-9] 또는 [a-zA-Z]와 같은 정규표현식은 \역슬래시를 이용해 간단하게 표현 할 수 있다. 대문자는 소문자의 반대^ 를 의미한다.

  • \d == [0-9] 숫자를 매치
  • \D == [^0-9]와 동일한 표현으로 숫자가 아닌것을 매치
  • \s == [ \t\n\r\f\v]와 동일한 표현으로 공백을 매치
  • [ \t\n\r\f\v]에서 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
  • \S == [^ \t\n\r\f\v]와 동일한 표현으로 공백이 아닌 것을 매치
  • \w == [a-zA-Z0-9_]와 동일한 표현으로 문자,숫자를 매치
  • \W == [^a-zA-Z0-9_]와 동일한 표현으로 문자,숫자가 아닌것을 매치

. #

Dot(.)은 개행기호인 \n을 제외한 모든 문자를 매치할 때 사용한다.

  • a.b == a+모든문자+b와 매치
    • aab a0b는 매치되며 abc는 매치되지 않는다.
  • a[.]b == a+.+b와 매치
    • [.].이라는 문자 자체로 인식한다.
    • a.b는 매치되지만 a0b는 매치되지 않는다.

* + ? #

반복을 표현하는 메타문자이다.

  • **의 바로 앞의 문자가 0부터 무한대로 반복 될 수 있음을 의미한다. о ab*c == a+b(0회 이상 반복)+cac, abc, abbbbbbc이 매치된다.
  • ++바로 앞의 문자가 최소 1번 이상 반복함을 의미한다. о ca+t == c+a(1회 이상 반복)+tabc, abbbbbbc는 매치되지만 ac는 매치되지 않는다.
  • {}는 원하는 반복 횟수를 지정할 때 사용한다.
    1. {m} 반드시 m번 반복
      • ab{2}c == a+b(2번 반복)+c
        • abbc는 매치되지만 ac, abc, abbbbbbc는 매치되지 않는다
    2. {m, n} m~n회 반복
      • ab{2,5}c == a+b(2~5번 반복)+c
      • abbc는 매치되지만 ac, abc, abbbbbbc는 매치되지 않는다
    3. {m,} m회 이상 반복 /{,n} n회 이하 반복
      • ab{2,}c == a+b(2~번 이상 반복)+c
        • abbc, abbbbbbc는 매치되지만 ac, abc는 매치되지 않는다
      • ab{,5}c == a+b(~5번 이하 반복)+c
        • ac, abc, abbc는 매치되지만 abbbbbbc는 매치되지 않는다
  • ?는 {0,1}과 동일한 표현으로 ?앞의 문자가 있거나 없거나 매치된다.
    • ab?c == a+b(없을 수 있음)+c
      • ac, abc는 매치되지만 abbbbc는 매치되지 않는다.