1. 정규표현식(Regual Expressions)
문자열 처리에 매우 강력하고 유연한 도구이며, 텍스트 데이터 처리, 데이터 유효성 검사, 문자열 추출, 대체 및 변환 등 다양한 용도로 사용된다.
문자열 패턴을 검색, 추출, 변환 등의 작업을 수행하기 위해 사용되는 표현 언어이다.
특정 문자열을 찾기 위해 와일드 카드로 *이나 ?를 사용하거나 특정한 문자 집합을 [ ] 표현하거나 숫자 또는 알파벳과 일치시키기 위해 \\d, \\w와 같은 패턴을 사용할 수 있다.
파이썬에서는 정규표현식을 사용하기 위해 re 모듈을 제공하고 있다. re모듈을 import 하여 정규표현식을 컴파일하고 문자열과 매칭하거나 원하는 작업을 수행할 수 있다.
1.1 정규표현식 사용 방법
정규표현식은 파이썬 자체 문법이 아니기 때문에, 정규표현식 모듈을 import 해야 한다. 정규 표현식 모듈은 문자열을 찾거나 변환하는 함수들이 존재하며, 특정한 규칙을 사용하여 문자를 변환하거나 찾을 수 있도록 한다.
import re # 정규표현식 가져오기
pattern = re.compile(문자클래스) # 검증해야할 문자의 패턴을 컴파일하여 객체로 저장
patern.함수명(문자열) # 정규표현식에서 사용되는 Method를 사용하여 대상 문자열 매칭
- 메타 문자
정규표현식에서는 특별한 용도로 사용되는 문자를 메타문자라 한다 메타문자는 총 12개가 있으며, 각각은 특수한 기능을 수행한다.
. ^ $ * + ? { } \ | ( )
-문자 클래스
정규식이 적용될 문자들의 집합으로, 대괄호([ ]) 안에 포함된 문자들 중 하나와 매치됨을 의미한다. 대괄호 안의 문자들이 매칭할 문자의 범위를 지정해 주는 것이다.
(-)를 사용하여 어디서부터(From) 어디까지(To)의 범위를 표현할 수 있다.
별도 표기법 | 정규 표현식 | 내용 |
\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 ] | 모든 문자(알파벳)와 모든 숫자 제외 |
1-2. 정규 표현식 Method
- match()
문자열의 첫 시작부터 정규식 규칙에 벗어나지 않고 유효한 위치까지 확인할 수 있도록 해준다.
문자열의 처음부터 정규식과 매치되는지 확인한다. 만약 match가 되면 match 된 객체를 반환하고 match가 되지 않을 경우 None를 반환한다.
- search()
문자열 전체를 대상으로 위치와 상관없이 정규식 규칙에 부합하는지 확인하는 것이다.
일치하는 부분이 문자열 전체에서 발견되면 해당 객체를 반환하고 그렇지 않으면 None을 반환한다.
- findall()
정규식과 일치하는 모든 문자열을 List로 반환한다.
- finditer()
정규식과 매치되는 모든 문자열을 iterator 객체로 반환한다.
2. 정규표현식 사용하기
2-1. 메타문자(Meta characters)
메타 문자는 원래 가진 문자의 뜻이 아닌 특별한 용도로 사용되는 문자를 말한다.
- Dot( . )
숫자, 문자, 영어, 한글, 특수문자, 등 \n을 제외한 모든 문자와 매칭된다.
반드시 하나 이상의 문자가 있어야 하며 [.]은 문자 Dot( . )을 의미한다.
- Asterisk( * )
바로 앞의 문자가 0~n번 등장하는 경우 매치되며 *앞에 문자가 없거나 여러 번 등장하는 것을 찾는 것을 의미한다.
- Plus( + )
문자열에서 바로 앞에 문자가 1~n번 등장하는 경우, +는 없을 수 없고 반드시 한 번 이상 반복되어야 매칭된다.
- {m}
바로 앞에 문자가 m번 등장하는 경우에 매치된다.
- {m,n}
문자열에서 m번부터 n번까지의 문자열이 등장한 경우, 해당 문자열과 매칭한다.
- ?
바로 앞에 문자가 0~1번 등장하는 경우 매칭된다. {0,1}과 같다.
- Vertical Bar, Pipe( | )
논리식의 or와 같이 '또는'을 뜻하며 여러 패턴 중 하나 이상과 매칭되는지 확인할 수 있다.
- Carent, Circumflex( ^ )
^뒤에 오는 문자열로 시작하는 문자열을 매치한다. 다만 가장 앞에서 사용할 경우, 문자 클래스의 문자를 제외한 문자에 대한 부정(NOT)을 의미한다.
- $
앞에 문자로 끝나는 문자열과 매칭된다.
2-2. 그룹(Group) 사용하기
- 그룹핑(Grouping)
앞에서 매칭한 문자열을 그룹화하여 값을 직접 가져오거나, 매칭한 문자열을 묶어서 찾을 수 있다.
괄호 ( )로 묶어주면 그룹핑된 값을 가져올 수 있다.
- 그룹 이름 정의
각 그룹에 대해 이름을 정의할 수 있으며, groupdict를 사용하여 각 key와 value가 어떻게 매칭되는지 확인할 수 있다.
?P<그룹명>을 사용하여 지정된 그룹의 이름을 정의할 수 있다.
2-3. 문자열 바꾸기(sub)
매칭된 문자열을 다른 문자열로 바꾸기 위해서 sub함수를 사용할 수 있다.
sub(변경할 문장, 변경될 문장, 변경 횟수)
'웹 서비스 개발(FB,BE,SERVER,DB) > Python' 카테고리의 다른 글
9. 예외 처리(Exception Handling) (0) | 2024.01.13 |
---|---|
8. 패키지(Packages) (0) | 2024.01.13 |
7. 모듈(Module) (2) | 2024.01.13 |
6. 클래스(Class) (1) | 2024.01.10 |
5. 파이썬 활용 (0) | 2024.01.10 |
댓글