정규 표현식은 메타 문자를 사용한 문자 검색을 하는데,
. ^ $ * + ? {} [] \ | ()
를 사용한다.
문자 클래스는 []내부에 문자를 넣어 사용할 수 있다.
[xy] : x or y 가 포함되는 것을 찾음.
[a-z] : a ~ z 가 포함되는 문자를 찾음.
[a-zA-Z] : 알파벳 모두를 찾음.
[\d] : 숫자와 매치, [0-9] 와 같음.
[\D] : 숫자가 아닌 것과 매치. [^0-9] 와 같음.
[\s] : 공백 문자를 찾는다.
[\S] : 공백이 아닌 문자를 찾는다.
[\t] : 탭 문자를 찾는다.
[\w] : 알파벳, 숫자, _를 찾는다.
[\W] : 특수 문자를 찾는다.
[^] : not을 표현해 [^xy] : x 및 y 를 제외한 문자를 의미한다.
. 은 \n 를 제외한 모든 문자와 매치됨을 의미한다.
{}는 반복 횟수를 사용자가 마음대로 고정할 수 있다.
ca{2}t : c + a(반드시 2번 반복) + t
ca{2,5}t : c + a( 2~5 반복 ) + t
? 는 반복의 {0,1}을 의미한다.
플래그는 정규 표현식의 검색 범위를 기본 검색 범위에서 설정을 변경할 수 있도록 하는 것이다.
\i : 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정.
\g : 검색 패턴을 비교할때 모든 부분을 대상으로 검색하도록 설정 (둘 이상의 일치 항목 찾음).
\m : 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정.
\y : 현재 위치부터 비교를 시작하도록 설정.
^ : 문자열의 시작을 의미.
$ : 문자열의 마지막을 의미.
re 모듈은 코테에서 문자열에 강력한 파이썬을 더욱 강력하게 해주는 무기 ⚔️이다.
match 와 유사함 그러나 문자열의 처음부터 검색하는 것이 아니라 문자열 전체를 검색함.
찾고자 하는 패턴이 해당 문자열에 존재하는지 여부를 나타낸다.
찾고자 하는 패턴과 일치되는 문자열의 모든 부분을 찾아낸다.
print(re.findall('a', 'aba'))
print(re.findall('a', 'bbb'))
print(re.findall('a', 'baa'))
print(re.findall('aaa', 'aaaa'))
['a','a']
[]
['a', 'a']
['aaa']
특정 패턴을 문자열에서 찾아 원하는 것으로 바꿈.
re.sub('(\w{%i})' %i, '\g<1> ',s)
# %i = for 문에서 선언해준 i 변수를 의미.
# word기 i 개 * i 개로 나눈 것을 각각 뒤에 공백이 있는 1개의 그룹으로 교체.