[210723 TIL] Python

Choi Rim·2021년 7월 23일
0

Python

목록 보기
15/20
post-thumbnail

정규표현식

정규표현식이란

  • 복잡한 문자열을 처리할 때 사용하는 기법, 모든 언어 공통

정규표현식은 왜 필요한가?

  • 문자열에 관련된 복잡한 문제를 해결 해야 될 때 정규 표현식을 사용하게 되면 짧고 간결하게 문제를 해결할 수 있게 해준다.

문자 클래스 []

[abc]
  • [] 사이의 문자들과 매치
  • "a"는 정규식과 일치하는 문자인 "a"가 있으므로 매치
  • "before"는 정규식과 일치하는 문자인 "b"가 있으므로 매치
  • "dude"는 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음
  • 하이픈을 사용하여 From-To로 표현 가능
    • ex) [a-c] = [abc], [0-5] = [012345]

Dot(.)

a.b
  • 줄바꿈(₩n)을 제외한 모든 문자와 매치
  • "aab"는 가운데 문자 "a"이 모든 문자를 의미하는 '.'와 일치하므로 정규식과 매치
  • "a0b"는 가운데 문자 "0"이 모든 문자를 의미하는 '.'와 일치하므로 정규식과 매치
  • "abc"는 "a"문자와 "b" 문자 사이에 어떤 문자라도 하나는 있어야 하는 이 정규식과 일치하지 않으므로 매치되지 않는다.

반복(*)

ca*t
  • "ct"는 "a"가 0번 반복되어 매치
  • "cat"는 "a"가 0번 이상 반복되어 매치 (1번 반복)
  • "caaat"는 "a"가 0번 이상 반복되어 매치 (3번 반복)

반복(+)

ca+t
  • "ct"는 "a"가 0번 반복되어 매치되지 않음
  • "cat"는 "a"가 1번 이상 반복되어 매치 (1번 반복)
  • "caaat"는 "a"가 1번 이상 반복되어 매치 (3번 반복)

반복 ({m, n}, ?)

ca{2}t
  • "cat"는 "a"가 1번만 반복되어 매치되지 않음
  • "caat"는 "a"가 2번 반복되어 매치
ca{2,5}t
  • "cat"는 "a"가 1번만 반복되어 매치되지 않음
  • "caat"는 "a"가 2번 반복되어 매치
  • "caaaaat"는 "a"가 5번 반복되어 매치
ab?c
  • "abc"는 "b"가 1번 사용되어 매치
  • "ac"는 "b"가 0번 사용되어 매치
  • ? == {0,1}와 같은 표현

정규표현식 시작하기

import re
p = re.compile('ab*')
  • 파이썬에서 정규 표현식을 지원하는 re 모듈
  • p는 패턴 객체

match

import re
p = re.compile('[a-z]+')
m = p.match('python')
print(m)
<re.Match object; span=(0, 6), match='python'>
import re
p = re.compile('[a-z]+')
m = p.search('python')
print(m)
<re.Match object; span=(0, 6), match='python'>

메타문자

^

import re
print(re.search('^Life', 'Life is too short'))
print(re.search('^Life', 'My Life'))
  • 맨 처음을 나타내는 매타문자이다.
  • 결과를 보면 두번째 프린트문은 첫 번째 부분이 일치하지 않기 때문에 None이 반환된다.

그루핑 ()

import re
p = re.compile('(ABC)+')
m = p.search('ABCABCABC OK?')
print(m)
print(m.group())
  • 괄호()를 이용해서 표현식을 묶어주는 것

전방탐색 : 긍정형 (?=)

import re
p = re.compilie(".+(?=:)")
m = p.search("http://google.com")
print(m.group())
  • 검색조건에는 포함되나 결과에는 포함되지 않는다.

사진 출처 - https://sunyzero.tistory.com/215

사진 출처 - https://omicro03.medium.com/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC-nlp-5%EC%9D%BC%EC%B0%A8-70b1d773d30a

git

git restore

git restore 파일명
  • 수정한 내용을 삭제하고 기존의 상태로 되돌린다.

<참고>

profile
https://rimi0108.github.io/

0개의 댓글