Languages/Python

파이썬 정규 표현식

잔망루피 2021. 4. 26. 22:23
import re

정규 표현식을 사용하기 위해 모듈 추가

 

📌 메타 문자 종류

[] 문자 클래스
[] 안의 문자들과 매치
[] 안에 -를 쓰면 범위
[SDT]
[a-z]
() 그루핑. 그룹을 만든다. (\d+)
? 문자가 있거나 없거나 ([*#]?)
^ 1. 문자열의 시작
2. not([] 안에서 쓰일 때)
'^apple'
[^a]
$ 문자열의 마지막 'apple$'
{m, n} m부터 n까지 반복 횟수 지정
생략된 m=0, n=무한대
ap{,1}le
. 줄바꿈 문자 \n을 제외한 모든 문자와 매치
a[.]b는 a.b다.
a.b
* 0~n번 반복되는 문자열 매치 ap*ple
+ 1~n번 반복되는 문자열 매치 ap+ple
| or apple|banana

(?=) 전방탐색 ex) .+(?=년) 년 앞에 문자들과 매치

 

 

👇 자주 사용하게 될 문자 클래스

\d [0-9] 숫자와 매치
\D [^0-9] 숫자가 아닌 것과 매치
\s [ \t\n\r\f\v] 공백 문자와 매치
\S [^ \t\n\r\f\v] 공백 문자가 아닌 것과 매치
\w [a-zA-Z0-9_] 문자+숫자와 매치
\W [^a-zA-Z0-9_] 문자+숫자가 아닌 문자와 매치

 

re.sub("패턴", "바꿀 문자열", "문자열", 바꿀횟수)

sub()로 정규식과 매치되는 부분을 다른 문자로 바꾼다.

 

re.split(패턴, 문자열, maxsplit=0, flags=0)

문자열을 패턴에 따라서 나눈다.

maxsplit은 문자열을 자르는 횟수다.

 

# re.compile()이란?

re.compile(pattern, flags=0)

정규표현식 객체 안에 있는 정규표현식 패턴을 컴파일

match(pattern, string, flags=0)
search(pattern, string, flags=0)

등과 같이 사용해서 string에서 매치되는 문자열을 찾는다.

match()는 문자열의 처음부터 정규식과 매치되는지 조사

search()는 문자열 전체를 검색

 

match 객체의 메서드 목적
group() 매치된 문자열을 반환
groups() 매치된 그룹들을 튜플에 담아 반환
없으면 None이 담김
start() 매치된 문자열의 시작 위치 반환
end() 매치된 문자열의 끝 위치를 반환
span() 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 반환

 

compile변수명.findall(문자열)
findall(패턴, 문자열)

정규식과 매치되는 문자열을 리스트로 반환

 

# 구체적인 사용예시
# 참고 : 파이썬 documentation

prog=re.compile(pattern)
result=prog.match(string)

result=re.match(pattern, string)
result1=prog.findall(string)

표현식이 여러 번 사용될 때 re.compile() 사용하는 것이 더 효율적이다.

 

 

 

👉참고 : 점프 투 파이썬

 

https://blog.hexabrain.net/205

 

정규 표현식(Regex) 강좌 9편. 전후방탐색(lookaround)

1. 전방 탐색(lookahead) 전방 탐색(lookahead)이란 작성한 패턴에 일치하는 영역이 존재하여도 그 값이 제외되어서 나오는 패턴입니다. 전방 탐색 기호는 ?= 이며, = 다음에 오는 문자가 일치하는 영역

blog.hexabrain.net

 

반응형

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

딕셔너리  (0) 2021.05.04
문자열 format  (0) 2021.04.30
set() 자료형  (0) 2021.03.19
[Error] int object is not callable  (0) 2021.02.24
함수  (0) 2021.01.18