티스토리 뷰

반응형

지난시간에 정규표현식(정규식) 에 대해 간단하게 알아보았다. (주민번호 뒷자리 *표시로 변경하기)

2020/08/31 - [IT 개발/Python] - 파이썬공부 35.정규식표현(주민번호 뒷자리 *표시로 변경하기)

이번시간에는 정규 표현식에 대해 좀더 자세히 알아보도록 하겠다. 

정규 표현식의 기초, 메타 문자

여기서 메타문자란? 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다. 

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

정규 표현식에서 위 메타 문자를 사용하면 특별한 의미를 갖는다. 

문자 클래스 [ ]

가장 먼저 살펴볼 메타 문자는 바로 문자 클래스(character class)인 []이다. 

문자클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치" 라는 의미를 갖는다. 

*문자 클래스를 만드는 메타 문자인  [ ] 사이에는 어떤 문자도 들어갈수 있다. 

즉 정규 표현식이 [abc]라면 이표현식의 의미는 "a, b, c 한개의 문자와 매치"를 뜻한다. 예를 들면

문자열 "apple", "before", "duble" 가 정규식 [abc]와 어떻게 매치되는 지 살펴보자.

- apple은 정규식과 일치하는 문자 a 가 포함되어 있으므로 매치

- before는 정규식과 일치하는 문자 b가 포함되어 있으므로 매치

- duble은 정규식과 일치하는 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음.

[ ] 안에 두 문자 사이에 하이프(-)을 사용하면 두문자 사이의 범위(from-to)를 의미한다. 

예를 들어 [a-c]는 정규표현식 [abc]와 동일하고, [1-5]는 [12345]와 동일하다. 

다음은 하이픈을 사용하는 정규식의 예이다. 

  • [a-zA-Z] : 알파벳 모두
  • [0-9] : 숫자

 (주의) 문자 클래스[] 안에는 어떤 문자나 메타 문자도 사용할 수 있지만 주의해야할 문자가 1가지 있다. 

그것은 바로 ^ 인데, 이 문자를 메타 문자 안에 넣게 되면 반대(not)이라는 의미를 갖기 때문에 

[^0-9] 라는 정규표현식은 원래[0-9] 즉 숫자를 나타내는 정규식에서 숫자가 아닌문자 즉 문자만해당하는 

정규식이 된다. 

[자주 사용하는 문자 클래스]

[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 

이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.

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

대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.

반응형
댓글