정규표현식

가비·2020년 10월 3일
1

정규표현식

목록 보기
1/2

정규표현식(regular expression)은 일정한 패턴을 가진 문자열을 표현하는 방법으로 특정한 규칙으로 된 문자열을 추출하거나 바꿀 때 사용한다. 문자열이 정해진 규칙에 맞는지 판단할 때도 사용한다.

메타 문자

. ^ $ * + ? { } [ ] \ | ( )

  • 메타 문자(meta characters)란 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다.

문자 클래스

  • 문자 클래스를 만드는 메타 문자인[]로 만들어진 정규식은 [] 사이 문자들과 매치라는 의미를 갖는다.
  • 대괄호 안에 두 문자 사이에 -를 사용하면 두 문자 사이의 범위를 위미한다.
    [a-zA-Z] [0-9]
  • ^를 주의하자 문자 클래스 안에 사용할 경우 not이라는 의미를 갖는다.
    [^0-9] 숫자가 아닌 문자를 매치한다.

자주 사용하는 정규표현식

# 정규표현식의 별도 표기법
\d == [0-9]         # 숫자와 매치
\D == [^0-9]        # 대문자로 사용된 것은 소문자의 반대 
\s == [ \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", "a"와 "b" 사이에 "어떤 문자"라도 있어야 매치된다.
    a[.]b "a.b", 문자 클래스([])내에 Dot(.) 메타 문자가 사용된다면 문자 그대로를 의미한다.
  • re.DOTALL 옵션을 사용하면 \n 문자와도 매치된다.

반복

*

  • 바로 앞에 있는 문자가 최소 0부터 2억번 정도까지 반복될 수 있다.
    ca*t "ct","caaat" 모두 "a"가 0번, 3번 반복되어 매치

+

  • 바로 앞에 있는 문자가 최소 1번 이상 반복될 때 사용한다.
    ca*t "ct", "a"가 0번 반복되어 매치되지 않는다.

- {m,n}과 ?

  • {} 메타 문자를 사용하면 반복 횟수를 지정할 수 있다.
    {m,n} 바로 앞에 있는 문자 반복 횟수 m부터 n까지
    {3,} 반복 횟수 3 이상 {,3} 3 이하 {3} 반드시 3번 반복
  • ? 반복은 아니지만 {0,1}과 동일한 의미를 가진다.
    ca?t "c+a(있어도 되고 없어도 되고)+t", "a"가 있거나 없거나 둘다 매치된다.

0개의 댓글