본문 바로가기
파이썬

6주차, 정규식

by 호놀롤루 2022. 1. 29.

정규식이 필요한 이유는 복잡한 코드 안에서 원하는 정보면 걸러내기 위해서이다.

 

정규식이란

・ 특정한 규칙을 가진 문자의 집합을 표현할 때 사용하는 언어

・ 문자열에서 특정한 조건을 만족하는 경우를 걸러낼 때, 일반적인 조건문으로는 다소 복잡할 수도

있지만, 정규 표현식을 이용하면 매우 간단

・ 파이썬에서만 쓰이는 것이 아닌 general한 방식의 언어이기에 익혀두면 다른 언어에서도 도움 됨

・ 파이썬에서 정규식은 re 모듈이 제공

 

정규식

문자                     설명

*                  0회 이상의 반복

+                 1회 이상의 반복

?                  0이나 1회 반복

{m}              m회 반복을 허용

{m,n}           m회부터 n회까지 반복 허용

 

re.match('찾을 문자 정규식', '문자열')

re.search

 

re.match('y*t', 'python') # y는 있든 말든 몇개든 상관없고 t는 무조건 있어야 한다.

re.match('y+t', 'python') # y한 번 이상 있어야 하고 t 있어야 함

 

문자                    설명

.                   줄 바꿈 문자를 제외한 문자

^                     문자열의 시작과 매칭            // ^문자열 은 문자의 시작을 의미

$                    끝나는 문자열               // 문자열$ 는 문자열의 끝을 의미

[]              문자 집합을 의미, [abc]와 같이 사용해서

                    a, b, c 중 하나를 의미하거나 [a-z]라고 써서 a부터 z까지중 하나를

                   의미하기도 함

|                 또는

 

특수문자                 설명

\d                      모든 숫자

\D                   숫자가 아닌 문자

\s                화이트 스페이스(빈칸)와 매칭

\S               화이트 스페이스가 아닌 문자와 매칭

\w                   숫자 또는 문자

\W              숫자 또는 문자가 아닌 것

 

re.word('[a-zA-Z]+')       # 정규식 조합, 대괄호 안에 있는 게 한 번 이상 반복

 

・ re는 정규 표현식을 이용한 문자열 매칭에 사용되는 파이썬 라이브러리다.

・ re.compile(정규식 패턴문자열): 정규식 패턴을 파이썬이 사용 가능한 정규식 객체로 컴파일 해줌

이를 통해 객체가 된 정규식은 match(), search()등에 사용 가능

a = re.compile('[oz]{1,3}')

re.search(a, 'ozozozozozzozoozzozoz')

 

・ re.search(정규식 패턴 문자열, 대상 문자열): re.compile()로 객체로 변환된 패턴이나, 정규식

패턴문자열을 대상 문자열에서 찾는 역할을 한다.

 

 

Re 모듈

・ re.match(정규식 패턴 문자열, 대상 문자열): re.search()와 비슷하거나, 문장 처음부터 패턴과

일치하는 문자열만 검색한다 // re.search('o', 'poaoaoaoaoaoaoao') 제대로 반환 됨

// re.match('o', 'poaoaoaoaoaoaoao') 문자열 시작이 'o'랑 달라서 반환 안됨

 

・ re.findall(): search나 match는 패턴과 일치하는 첫번째 문자열만 반환하지만, 이는 모든

문자열을 리스트 형태로 반환한다.

 

・ re.sub(pattern, repl, string): string에서 pattern을 찾아 repl(리플레이스)로 치환

// re.sub('y', 'i', 'python')  # pithon 패턴에 해당하는 부분이 repl과 치환됐다.

// re.sub('yto', 'i', 'pythonpython')  # piihinpiihin

// re.sub('yto+', 'i', 'pythonpython')  # pihinpihin  // to가 반복되니 i하나로 치환

 

・ re.split(pattern, string): pattern을 기준으로 문자열 분리

// re.split('-[0-9]{4}-', '010-4444-5555') // ['010', '5555']시작은 -고 0~9가 4번 나오고

// - 면 분리, 4444를 기준으로 분리돼서 저 결과가 나옴

 

'파이썬' 카테고리의 다른 글

7주차, 정규식 정리  (0) 2022.02.01
6주차, 정규식 실습  (0) 2022.01.31
6주차, 파이썬 db  (0) 2022.01.29
6주차, 쓰레드, 멀티 프로세스 활용  (0) 2022.01.29
6주차, 병렬처리, 프로세스, 쓰레드  (0) 2022.01.28

댓글