[Python] 정규 표현식(1) : 메타 문자

2 분 소요


👩정규 표현식?

프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규식이라고도 부르며, 보통 regex 혹은 regexp라 많이 쓴다.



👩메타 문자

원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다.

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

🙄 그렇다면 각 메타 문자가 어떠한 방식으로 사용되는지 하나씩 알아보자!!


⬛ 문자 클래스 : [ ]

  • ”[ ] 속 문자들과 매치”를 의미한다.

정규 표현식 [123]이 있을 경우, 아래의 문자열들이 매치되는지를 확인해보자.

[123] : 1, 2, 3 중 한 개의 문자와 매치
  • “1” : 1이라는 문자가 존재하므로 매치
  • “234” : 2, 3 문자가 존재하므로 매치
  • “456” : 1,2,3 중 어느 하나도 존재하지 않으므로 매치되지 않음


☝️ [ ] 속 하이픈(-) 사용

  • from - to‘의 의미를 가지고 있다.
  • [a-zA-Z] : 알파벳 전체
  • [0-9] : 숫자 전체

✌️ 표기 속 ^ 사용

  • ^ = not
  • [^0-9] : 숫자가 아닌 문자와 매치

👌 자주 사용하는 표기법

표기 해석 의미
\d [0-9]와 동일 모든 숫자
\D [^0-9]와 동일 텍스트 + 특수문자 + whitespace
\s [ \f\n\r\t\v]와 동일 스페이스, 탭, 개행
\S [^ \f\n\r\t\v]와 동일 텍스트 + 특수문자 + 숫자
\w [a-zA-Z0-9_]와 동일 텍스트 + 숫자 + ‘_‘포함
\W [^a-zA-Z0-9_]와 동일 특수문자 + 공백


⬛ Dot : .

  • 줄바꿈 문자(\n)을 제외한 모든 문자와 매치 가능!
    1.2 : a + 모든 문자 + b
    
  • 122 : 1와 2 사이에 어떤 문자가 와도 되므로 매치!
  • 123 : 1와 2 사이에 어떤 문자가 하나라도 있어야 하므로 매치되지 않음

🙄 그렇다면 아래 정규식을 살펴보자!

1[.]2 : 1.2 자체를 의미한다.
  • 문자 클래스 내에 Dot(.)이 사용된 것이므로 이는 문자 . 자체를 의미한다.


⬛ 반복 : * (0번 이상)

12*3 
  • *은 * 앞에 있는 문자무한대로 반복할 수 있다는 의미이다.
  • 1222223 : 2가 5번 반복되어 매치
  • 13 : 2가 0번 반복되어 매치


⬛ 반복 : + (1번 이상)

12+3 
  • +은 + 앞에 있는 문자1번 이상 반복할 수 있다는 의미이다.
  • 1222223 : 2가 5번 반복되어 매치
  • 13 : 2가 0번 반복되었으므로 매치되지 않음


⬛ 반복 : {m, n} (m번 이상, n 이하 반복)

12{2, 4}3 
  • {m, n} 앞 문자를 m번 이상, n번 이하 반복할 수 있다는 의미이다.
  • 12223 : 2가 3번 반복되어 매치
  • 123 : 2가 1번 반복되었으므로 매치되지 않음
  • 1222223 : 2가 4를 초과한 5번 반복되므로 매치되지 않음

🙄 m과 n의 생략

  • {,3} : 3이하 반복
  • {2,} : 2이상 반복

⬛ 반복 : ? (= {0, 1})

  • 즉, 있어도 되고, 없어도 된다는 의미이다.
    12?3
    
  • 123 : 2가 1번 사용되므로 매치
  • 13 : 2가 0번 사용되므로 매치

📃 참고

댓글남기기