본문 바로가기
Python

[파이썬] 정규식 표현 정리

by 퍼포먼스마케팅코더 2022. 8. 12.
반응형

이거는 파이썬 정규식 표현을 정리해 놓은 게 있어요. 처음의 경우는요. 기본적으로 아주 기본적인 공간에서 사용되는 정규직 표현법을 정리한 건데, 아시는 분들은 아시는 내용이 많이 있으니까 임의로 이런 게 있는지 확인하기 위한 용도로 써놓은 게 있잖아요.복잡하긴 해요. 첫번째는그런거고두번째는사용법에따라서조금달라져요. 

파이썬 정규식 표현 정리

그래서 그거 확인하는 거 쓰려고 넣은 거예요. 다양한 코딩이 있는데 이걸 그냥 정리만 해놨다고 생각하세요.하지만 이것이 모두 정확한 것은 아닙니다. 그때마다 제가 가져오는 편이기 때문에 특히 한글만 뽑든지 특수문자를 뽑든지 한글과 영어만 남기고 나머지는 다 제거합니다. 

 

여러 부분에서 사용되는 부분이 있기 때문에 특히 자주 사용되는 메일이나 규칙적인 표현입니다. 핸드폰 주소 같은 게 필요하다고 생각하시면 적어서 가져올 수도 있습니다. 특수한 것은 아직 없기 때문에 일단 이것만으로 정리하고 더 자세한 것은 좀 더 파서 가져왔을 겁니다.

 

import  re

# https://wikidocs.net/4308 정규식 내용
# https://wikidocs.net/4309 정규식 상세
# https://software-creator.tistory.com/32#:~:text=find%20all%20%2D%20%ED%8C%A8%ED%84%B4%EA%B3%BC%20%EC%9D%BC%EC%B9%98,%5D%2B%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%93%B0%EB%A9%B4%20%EB%90%9C%EB%8B%A4.&text=m%20%3D%20re.search('%5Ba%2DzA%2DZ,%ED%95%98%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EA%B2%BD%EC%9A%B0.
# https://codingspooning.tistory.com/138

# 정규식 표현법 정리

#[자주 사용하는 문자 클래스]
#[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_]와 동일한 표현식이다.
#대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.

#match()	문자열의 처음부터 정규식과 매치되는지 조사한다.
#search()	문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
#findall()	정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
#finditer()	정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.

#group()	매치된 문자열을 돌려준다.
#start()	매치된 문자열의 시작 위치를 돌려준다.
#end()	매치된 문자열의 끝 위치를 돌려준다.
#span()	매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.




#반복을 나타내는 또 다른 메타 문자로 +가 있다. +는 최소 1번 이상 반복될 때 사용한다. 
#즉 *가 반복 횟수 0부터라면 +는 반복 횟수 1부터인 것이다.

#문자 클래스([ ]) 안에는 어떤 문자나 메타 문자도 사용할수 있지만 주의해야 할 메타 문자가 1가지 있다. 
#그것은 바로 ^인데, 문자 클래스 안에 ^ 메타 문자를 사용할 경우에는 반대(not)라는 의미를 갖는다. 
#예를 들어 [^0-9]라는 정규 표현식은 숫자가 아닌 문자만 매치된다.


#반복은 아니지만 이와 비슷한 개념으로 ? 이 있다. ? 메타문자가 의미하는 것은 {0, 1} 이다.

#다음 정규식을 보자.
#ab?c
#위 정규식의 의미는 다음과 같다:
#"a + b(있어도 되고 없어도 된다) + c"
import re

p = re.compile("^python\s\w+", re.MULTILINE)

data = """python one
life is too short
python two
you need python
python three
python a3aa35192
"""

print(p.findall(data))

p = re.compile("^python\s\w+")
data = """python one
life is too short
python two
you need python
python three

"""

print(p.findall(data))
charref = re.compile(r'&[#](0[0-7]+|[0-9]+|x[0-9a-fA-F]+);', re.VERBOSE)

charref
charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)
#문자(한글, 영문)와 숫자만 남기고 특수문자 제거하기

import re

string = "abcdefㄱㄴㄷㄹㅁㅂ가나다라마바사12345[]{}().,!?'`~;:"
re.sub('[^A-Za-z0-9가-힣]', '', string)

 

 

 

반응형

댓글