★정규 표현식(Regular Expressions)
- 복잡한 문자열을 처리할때 사용하는 기법
- 문자열을 처리하는 모든 곳에서 사용.
- 줄여서 정규식.
정규식은 고급 주제.
★정규식 기초, 메타 문자
. & $ * + ? { } [ ] \ | ( )
문자 클래스 []
[]사이에는 어떤 문자도 들어갈수 있다.
[] 안의 두문자 사이에 하이픈(-)을 사용하게 되면 두문자 범위를 의미.
[a-c]는 [abc]동일 [0-5]sms[012345]
[a-zA-z] : 알파벳 모두
^는 반대의 의미 [^0-9] 숫자가아닌 문자만을 의미.
★자주 사용하는 문자 클래스
\d - 숫자와 매치 [0-9]
\D - 숫자가 아닌 것과 매치 [^0-9]
★Dot(.)
줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미
하지만 re.DOTALL 옵션을 주면 \n문자와 매치 가능.
a.b
"a + 모든 문자 + b"
a[.]b
"a + Dot(.)문자 + b"
★반복(*)
ca*t
*바로 앞에 있는 문자 a가 0부터 무한대로 반복의미
무한대(2억개)
★반복(+)
+최소 1번 이상 반복될때 사용
*가 반복횟수 0부터라면 +는 반복횟수 1부터
ca+t
"c+a(1번 이상 반복) + t"
ca{2}t
a가 2번 반복매치
ca{2,5}t
a가 2~5회 반복매치
★?
ab?c
"a + b(있어도 되고 없어도 된다) + c"
★정규식 지원 re 모듈
re(regular expression의 약어) 모듈 제공
컴파일 된 패턴 객체는 4가지 메소드 제공
match, search는 정규식과 매치 될때는 match객체를 리턴하고 매치 되지 않을 경우 none을 리턴.
span() : 매치된 문자열의 (시작, 끝) 튜플 리턴
첫번째 문자가 3이지만 문자열 전체를 검색하기 때문에 3 이후의 python 이라는 문자열과 매치
★findall
리스트로 리턴
★match 객체의 메서드
어떤 문자열이 매치?
매치된 문자열의 인덱스는 어디서부터 어디까지?
'Python > Python' 카테고리의 다른 글
Python-외장함수 (0) | 2017.06.16 |
---|---|
Python-내장 함수 (0) | 2017.06.12 |
Python-오류 예외 처리 (0) | 2017.06.11 |
Python-모듈 (0) | 2017.06.10 |
Python-Class (0) | 2017.06.08 |