기본기 채우기
정규식을 마스터하자
개굴이모자
2021. 2. 21. 22:44
반응형
정규식을 마스터해보자
본 내용은 elice 파이썬 정규표현식 강의를 기반으로 작성되었음을 알립니다.
re 모듈에 대하여
- 정규식을 사용하기 위해 re 라는 모듈을 import 해야합니다.
- re.compile() 함수는 문자열 패턴을 컴파일해 정규식 객체를 반환한다.
- 특정 정규식을 코드 내에 여러번 사용하고자 할 때, re.compile()으로 정규식 객체를 만들어 활용한다.
pattern = re.compile("hello") print("만든 정규식 객체 활용 : ", pattern.findall(text)) print("객체 사용하지 않음 : ", re.findall("hello",text))
- 특정 정규식을 코드 내에 여러번 사용하고자 할 때, re.compile()으로 정규식 객체를 만들어 활용한다.
- re 모듈의 대표적인 함수
- re.match(pattern, string) : string 시작에서부터 해당 pattern이 존재하는지 검사하여 MatchObject를 반환한다.
- re.search(pattern, string) : string 전체에 pattern이 존재하는지 검사하여 MatchObject를 반환한다.
- re.findall(pattern, string) : string 전체에서 패턴과 매치되는 모든 경우를 찾아 list로 반환한다.
- re.finditer(pattern, string) : string 전체에서 패턴과 일치하는 결과에 대한 iterater 객체를 반환한다. (반환하는게 iterater 인 것의 차이)
- re.sub(pattern, replaceString, string) : string에서 pattern 과 매칭되는 부분을 replaceString으로 수정한 문자열을 반환한다.
- re.subn(pattern, replaceStrnig, string) : re.sub()와 동일한데, 함수의 결과를 (결과 문자열, 교체 횟수) 튜플로 반환한다.
메타 문자
- ^ : 문자열의 시작
- $ : 문자열의 끝
- | : or 조건식
- [] : 문자 클래스
- \d : 숫자를 나타낸다
- \D : 숫자가 아닌 모든 문자를 나타낸다
- \w : 알파벳 대소문자, 숫자, 밑줄을 나타낸다
- \W : \w에 해당하지 않는 문자들을 나타낸다
- \s : 공백, 탭 문자를 나타낸다
- \S : \s 에 매칭되지 않는 모든 문자들을 나타낸다
- \t : 탭 문자
- \v : 세로 탭 문자
- \f : 용지 넘김 문자
- \r : 캐리지 리턴 문자
- \n : 개행 문자를 나타낸다
- \ : escape 문자
- . : 모든 문자를 말한다
- (?i) : 대소문자 무시 (?i)... 혹은 ...(?i) 앞이든 뒤든 상관 없다.
- 예시
"a|e|i|o|u" == "[aeiou]" <=> "[^aeiou]"
수량자
- : 0개 이상
- : 1개 이상
- ? : 0개 또는 1개
- {n} : n개
- {n,m} : n개 이상 m개 이하
- {n,} : n개 이상
그룹
- (base|kick){2} 은 basebase, kickkick, basekick, kickbase 와 매칭됨
- 만들었던 그룹을 재사용 할 수 있다.
- (to)ma\1 -> tomato 로, 만들어진 순서부터 1번째인 to를 재사용한다.
- 비캡쳐링 그룹 : 패턴 문자들을 묶는데, 그룹 단위로 매칭되지 않게 하여 그룹으로 묶인 것들을 따로 구분한다. (?:tom|pot)ato -> (?:)를 사용
- 예시 ) "tomato potato"에 "(pot|tom)ato" 적용시, "pot", "tom"이 출력된다. (그룹으로 캡쳐한 부분이 있으면 이외는 출력하지 않는다. -> ato 는 그룹이 아니므로 출력안됨)
반응형