정규식이 필요한 이유는 복잡한 코드 안에서 원하는 정보면 걸러내기 위해서이다.
정규식이란
・ 특정한 규칙을 가진 문자의 집합을 표현할 때 사용하는 언어
・ 문자열에서 특정한 조건을 만족하는 경우를 걸러낼 때, 일반적인 조건문으로는 다소 복잡할 수도
있지만, 정규 표현식을 이용하면 매우 간단
・ 파이썬에서만 쓰이는 것이 아닌 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 |
댓글