기본 메타 문자
A-Z = 대문자
a-z = 소문자
0-9 = 숫자
가-힣 = 한글
\s = 띄어쓰기
^ = 부정 표현(not)
- = 범위 설정
ex) 0-5 = 0,1,2,3,4,5
A-D = A, B, C, D
. = 어떠한 텍스트도 포함
ex) [a.b] = -> acb, aeeeeb, a1b, aZb 모두 적용 (a와 b 사이에 어떠한 텍스트가 들어와도 적용)
* = 0번 이상 반복
+ = 1번 이상 반복
ex) [ca*t] = ct에 정규식 적용 O, [ca+t] = ct에 정규식 적용 X (ct에서는 a가 0번 반복)
[] = [] 안에 있는 문자들과 일치하는 것에 대해 적용한다는 의미
ex) [abc] = a, b, c 중 한 개의 문자와 매치 -> re.sub("[abc]", "", 데이터) = 문자열 혹은 리스트에서 a, b, c제거
? = ?앞에 입력한 텍스트가 있든 없든 적용
ex) [ab?c] = abc, ac 모두 정규식 적용 O
.*? = 어떠한 문자열도 정규식 적용을 허용하겠다는 것을 의미
- ?<= : 전방 탐색, ?= : 후방 탐색
re.sub를 이용한 텍스트 변경
- re.sub("[A-Z]", "", 데이터) = 대문자 제거
- re.sub("[^A-Z]", "", 데이터) = 대문자 이외 모두 제거
- re.sub("[^가-힣A-Za-z0-9\s]", "", 데이터) = 한글, 대문자, 소문자, 숫자, 띄어쓰기 이외 모두 제거
- re.sub("<.+>, "", 데이터) = 태그(<>) 제거
- re.sub("[''\"\"]", "", 데이터) = 따옴표(', ") 제거
※ 이때 데이터의 타입은 str과 list만 적용됨
※ \를 적용하기 위해서는 \앞에 \을 한번 더 입력하여 \\로 입력해야 정규표현식이 적용됨
=> r 문자(raw string)로 해결 가능 (\을 두번 입력할 필요 X)
ex) \number라는 문자열을 정규표현식에 적용하려면 \\number로 입력
=> re.sub(r"\number", "", a)
findall을 이용한 특정 텍스트 출력
- findall = 정규식과 매치되는 모든 문자열을 리스트로 돌려줌
ex) rule = re.compile('(?<=\<div>)(.*?)(?=<\/div>)') -> rule.findall(데이터)
<div> ~ </div> 사이의 텍스트 모두 추출
'코딩테스트 tip' 카테고리의 다른 글
문자열의 타입 판별 메소드 (0) | 2022.10.24 |
---|---|
sum 시간복잡도 (0) | 2022.10.23 |
''.join(dict.fromkeys()) (0) | 2022.09.14 |
zip() (0) | 2022.09.13 |
list(map(int, input())) 주의할 점 (0) | 2022.09.12 |
댓글