본문 바로가기
코딩테스트 tip

RE 정규표현식 기본

by Mecodata 2022. 10. 17.

기본 메타 문자

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

댓글