zenn.skin 무료버전 배포중!
자세히보기

Python/Syntax

정규표현식(Regular Expression, regex)

koosco! 2020. 8. 9. 04:39

1. 정규표현식이란?

- 정규표현식은 특정한 조건의 문자를 검색하거나 치환하는 과정을 간단하게 할 수 있도록 도와준다. 처음 보면 익숙하지 않은 문법에 당황할 수 있고, 직접 정규표현식을 작성하더라도 나중에 다시 보면 내가 짠 정규표현식을 이해하기 어려울 때도 있다... 하지만 문자열 처리를 할 때는 없어서는 안 되는 꼭 필요한 형식 언어이다:)

 

- 웹 프로그래밍을 할 때, url을 동적으로 지정할 때도 사용되며 웹 크롤링에서 파싱할 때도 항상 사용된다. 문자열이 많이 사용되는 웹 프로그래밍 관련 부분에서는 정규표현식이 없으면 문자열 처리가 매우 복잡해지므로 필수적으로 사용된다

 

- 대문자와 소문자를 구분하며 뛰어 쓰기를 구분한다

 

2. 메타 문자

- 정규표현식에서 특수한 의미를 갖는 특수문자를 메타 문자라 한다.

ex) ^, $, ., [], |, ?, +, * 등등

 

  • ^ : ^ 뒤에 오는 문자로 시작되는 문자열을 지정
  • $ : $ 앞에 오는 문자로 끝나는 문자열을 지정
  • [] : 대괄호 안에 있는 문자를 지정, 이때 대괄호는 하나의 문자를 나타낸다
  • | : or을 의미
  • ? : ? 앞에 오는 문자가 0개 또는 1개 존재
  • * : * 앞에 오는 문자가 0개 이상 존재
  • + : + 앞에 오는 문자가 1개 이상 존재
  • . : 한 개의 문자를 나타냄(와일드카드), 모든 문자를 나타낸다
  • {n, m} : 중괄호 앞의 문자가 n번 이상 m번 이하 존재
  • {0, 1} : ?와 동일한 의미
  • {0,} : *와 동일한 의미
  • {1,} : +와 동일한 의미
  • {n} : 앞의 문자가 정확히 n번 나타남
  • \w : word를 의미. 소문자, 대문자, 숫자, _(언더바)를 지칭한다
  • \W : word가 아닌 것을 의미. 특수문자, 공백, 콜론, . 을 지칭한다
  • \d : digit을 의미. 숫자를 지칭한다
  • \D : digit이 아닌 모든 것을 지칭한다
  • \A : 문자열의 시작점을 의미한다
  • \Z : 문자열의 끝을 의미한다

- 위의 메타 문자만 알아도 대부분의 정규 표현식을 표현할 수 있다

 

3. 예제

1) ^

 

'^'는 맨 앞에서 일치하는 문자열을 지정한다, 뒤의 who는 지정되지 않는다

 

2) $

'$'는 맨 뒤에서 일치하는 문자열을 지정한다, 앞의 who는 지정되지 않는다

3) []

[]는 안에 있는 문자들 중 하나를 지정한다, 대괄호 하나는 문자 하나를 지정한다

4) [-]

[]안에서 '-'를 사용하면 범위를 지정할 수 있다
뛰어 쓰기 없이 이어쓰면 범위 여러개 지정 가능, 뛰어 쓰기 할 경우 띄어 쓰기도 포함된다

5) | (or)

''는 or을 나타낸다

 

6) ?

'?' 앞에 오는 문자가 없거나 하나 존재한다, aab나 aaab는 지정되지 않는다

 

7) *

'*'는 앞에 오는 문자가 0개 이상 존재함을 나타낸다

 

8) +

'+'는 앞에 오는 문자가 한 개 이상 존재함을 나타낸다, b는 a가 없으므로 포함되지 않는다

 

4. 참고사이트

1) regex101 : 정규표현식을 연습할 수 있는 사이트이다. REGULAR EXPRESSION에 정규 표현식을 적어주고 TEST STRING에 예문을 적으면 TEST STRING에 있는 문자열을 정규표현식으로 찾을 수 있다. 여러 색으로 구분되고 인터페이스가 깔끔해 이용하기 편하다

 

 

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

Please wait while the app is loading...

regex101.com

 

2. ZVON : 정규표현식에 대한 간단한 예제를 제공하는 사이트로 페이지 순서대로 따라가며 배우면 기초부터 배울 수 있다. 위에 regex101을 이용해 예제를 연습하기 좋다.

 

 

Regular Expressions Tutorial @ZVON.org

 

zvon.org

 

3. 생활코딩님 블로그 : ZVON에 나와있는 예제들을 생활코딩님이 직접 설명해주신 동영상이다. 게시된지 오래됐지만 처음 배울 때 많은 도움이 됐고 친절하게 설명해주셔서 처음 하는 사람도 쉽게 이해할 수 있다.

 

정규표현식 패턴들 - 생활코딩

본 수업은 zvon의 정규표현식 tutorials를 이용한다. 실제 강의는 동영상을 참고하자. zvon은 아래의 URL을 통해서 접근 할 수 있다. http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents 아래는 인터렉티브하게 정

opentutorials.org

 

'Python > Syntax' 카테고리의 다른 글

[Python] 한 줄에 두 개의 정수 입력 받기 (input, map)  (0) 2020.09.08
[Python] split  (0) 2020.09.08
[Python] 가상환경 설정  (0) 2020.09.04
[Python]Sort와 Sorted  (0) 2020.07.20
[Python] extend와 append  (0) 2020.07.19

'Python/Syntax'의 다른글

  • 현재글 정규표현식(Regular Expression, regex)

관련글