정규표현식

logY·2022년 7월 12일
0

기본 문법

  1. 패턴을 그래도 매칭하는 경우 : 편집기에서 “찾기" 기능을 통해서 특정 단어를 찾는 것 처럼, 단어 그대로를 패턴으로 사용하여 매치되는 영역을 찾는다.
  2. 메타문자 및 수량 한정자를 적용하는 경우 : 정규식 패턴에 쓰이는 문자 중에는 특별한 의미를 가지는 메타 문자들이 있는데, 이들을 사용하여 보다 폭넓은 패턴에 매치할 수 있다.
  3. 그룹 및 look around 기능을 사용하는 경우 : 제법 고급 정규식이라 할 수 있는 부분으로, 패턴의 일부를 그룹으로 묶거나, 특정 패턴의 앞 뒤로 다른 패턴이 오는 조건을 더하는 경우이다.

메타 문자

  • ^ : 문자열의 시작을 표현한다. [ ... ] 내부에서 쓰이는 경우라면 뒤의 패턴에 일치하지 않는 것을 선택한다.
    • ^http : 문자열이 http로 시작하는 경우에만 매치하며, 중간에 나타난 http에는 매치하지 않는다.
    • ab[^0-9]: “ab” 뒤에 숫자가 아닌 것이 오는 것에만 매치한다. (“abc” – O, “ab1” – X)
  • $ : 문자열의 끝을 표현한다.
    • them$ : 문자열이 “them”으로 끝난 경우에만 해당 “them”에 매치한다.
  • \b : 단어의 경계. 문자열 시작과 끝, 공백, 개행, 탭, 콤마, 구두점, 대시문자 등이 올 수 있다.
    • \bplay\b : 는 단어 경계로 구분되는 “play”에는 매치한다. 하지만 “playground”의 “play”에는 매치하지 않는다.
  • \B : \b가 아닌것. 정규식 메타문자에서는 흔히 대문자로 표현한 것은 소문자로 표현한 문자의 반대를 의미한다.
    • \bplay\B : “play”뒤에 단어의 경계가 아닌 것이 올 때에만 매치한다. “playground”, “playball”의 “play”에 매치한다. 뒤에 오는 “g”, “b” 등의 문자는 포함하지 않는다.
  • \s : 공백 문자 및 탭 문자에 매치한다.
  • \S : 공백 문자가 아닌 한 글자에 매치한다.
  • \d : 숫자에 매치한다. [0-9]와 같다.
  • \D : 숫자가 아닌 문자에 매치한다. [^0-9]와 같다.
  • \w : 단어를 만들 수 있는 글자. 알파벳 대소문자, 숫자, 언더스코어를 포함한다. [A-Za-z0-9_] 와 같다.
  • \W : \w에 포함되지 않는 문자들
  • \n : 개행문자. \r은 캐리지 리턴이다.
  • \ : 이스케이프용 문자. 정규식 상의 특별한 의미가 있는 문자들을 문자 그대로 쓸 때 앞에 붙인다. \^ 라고 쓰면 “^” 문자 그대로를 가리킨다.
  • . : 아무 문자 1개에 대응된다. 공백 역시 문자 1개로 취급된다.

선택 패턴

  • | 문자를 이용하면 A | B 의 패턴으로 A 혹은 B에 매칭할 수 있다. 예를 들어 tomato와 potato에 모두 매칭하고 싶다면 tomato|potato 라고 쓸 수 있다.  선택 패턴은 이후에 등장하는 그룹 패턴과 관련하여 보다 강력하게 쓰일 수 있다.
  • 그외의 선택패턴으로는 [ ... ]이 있다. 대괄호속에 넣은 문자 중에서 하나에 매칭하는 것이다. [cfh]all 이라는 패턴은 callfallhall에 모두 매치될 수 있다. 특히 선택 패턴은 A-B를 통해서 특정 범위를 표현할 수도 있는데, 숫자의 경우 [0-9],  알파벳 소문자의 경우 [a-z], 알파벳대문자의 경우 [A-Z] 와 같은 식으로 한 글자에 매칭하는 것이 가능하다. 유니코드를 지원하는 정규식에서는 [ㄱ-힣]을 이용해서 한글 한 글자에 매칭하는 것도 가능하다.
  • 또한 선택 패턴 내에서 ^ 이 쓰이면 not 의 의미가 되며, 이 문자 뒤에 오는 문자들은 제외하게 된다. [^cfh]all 은 앞서 나온 callfallhall에는 매치하지 않으며 mall에는 매치하게 된다.
profile
백엔드 개발자

0개의 댓글