★정규 표현식(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

+ Recent posts