본문 바로가기
programming/Python

파이썬 정규식 메타문자 python regex meta character

by 개코 - 개발과 코딩 2021. 12. 18.

파이썬에서 정규식은 매우 유용하다. 메타문자를 같이 사용하면 검색되는 문자열을 좀 더 정확하게 찾을 수 있다. 이런 정규식을 사용함으로써 많은 것을 할 수 있겠짐나, 단어의 추출이나 검색 조작에도 유용하다. 메타문자만 잘 사용하더라도 어지간한 것은 할 수 있다.

파이썬 정규식 메타문자
python regex meta character

파이썬에서 정규식을 사용하기 위해 사용하는 것이 패턴문자열이다.

패턴문자열에는 단순한 문자열을 사용할 수 있지만 메타문자를 이용하여 패턴문자열의 자유도를 높일 수 있다.

자유도를 높인다는 것은 패턴문자열의 다양성을 높인다는 것이다.

이것은 패턴문자열의 확장성을 의미하기도 한다.

정규식 메타문자

길고 긴 문자열에서 특정 문자열을 찾는 것은 귀찮은 작업이다.

귀찮은 작업을 좀 더 쉽게 하기 위해 엑셀에서는 함수를 사용하고, 프로그램은 정규식과 같은 것을 제공한다.

이런 것을 가능하게 하는 것이 정규식이다.

정규식에서 패턴문자열을 확장하여 사용하기 위해 메타문자를 사용한다.

메타문자의 종류는 다음과 같다.

  • []
    문자의 집합을 의미
  • \
    문자열 시퀀스를 의미
  • .
    불특정한 문자를 의미
  • ^
    문자열의 시작을 의미
  • $
    문자열의 종료를 의미
  • *
    0개 이상의 문자를 의미
  • +
    1개 이상의 문자를 의미
  • ?
    0 또는 1개의 문자를 의미
  • {}
    문자열에서 정확한 갯수를 의미
  • |
    단어들의 집합을 의미 ( or 의 의미 )

샘플 코드

위의 의미만 보면 알 수 없다.

샘플코드를 보면 이해가 될 것이다.

메타문자의 의미를 아는 것은 정규식을 잘 사용하는데 도움이 된다.

print("----------")

import re

vString = "파이썬은 누구나 다르기 쉬운 언어이다. 배우고 싶은 언어 1위에서 10위까지 항상 파이썬은 존재한다."

print("----------")

vPattern = "[파-하]"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "\d"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "파.썬"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "^파이썬"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "다.$"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "1.*지"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "1.+지"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "파.?썬"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "파.{1}썬"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "파이썬|파이참"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

vPattern = "파이썬|파이참"
vMatch = re.findall(vPattern, vString)

print(type(vPattern), vPattern)
print(type(vMatch), vMatch)
    
print("----------")

결과화면을 보자.

정규식의 메타문자의 의미를 해석해보는 것이 중요하다.

처음에는 그 의미가 어려울 수 있지만 직접 코딩해 보는 것이 중요한 부분이기도 하다.

반응형

댓글