본문 바로가기
Programming/etc

파이썬 정규 표현식(re) 모듈

by 제타 2018. 3. 21.
반응형

파이썬은 정규표현식을 위해서 re 모듈에 문자열 검색, 치환, 분리 등의 기능을 갖고 있다.


정규표현식에서 문자나 패턴을 나타내기 위한 특수문자들


 특수문자

 의미

 개행문자를 제외한 문자 1개를 나타냄. re.DOTALL이 설정돼있으면 개행도 포함

^

 문자열의 시작. re.MULTILINE이 설정돼있으면 매 라인마다 매치됨

$

 문자열의 종료.  re.MULTILINE이 설정돼있으면 매 라인마다 매치됨

[] 

 문자열의 집합을 나타냄. 가령 [abcd]면 a b c d 중에 한 문자와 매치되고 [a-d]로 쓸 수도 있다. [^a]는 a를 제외한 모든 문자이다

 a|b. a 또는 b

() 

 괄호 안의 정규식을 그룹으로 만듦. 괄호 자체를 매칭시킬려면 '\(', '\)'나 '[(]', '[)]'로 나타내면 됨

*

 문자가 0번 이상 반복

 문자가 1번 이상 반복

?

 문자가 0번 혹은 1번 반복 

{m} 

 문자가 m번 반복 

{m,n} 

 문자가 m회부터 n회까지 반복되는 모든 경우의 수 

{m,} 

 문자가 m회부터 무한 반복되는 모든 경우의 수 



그리고 확장 문법으로 re모듈에서는 자주 사용되는 문자열의 집합을 이스케이프 문자열로 미리 정의를 해놓았다.

종류 

 설명

\w 

 유니코드인 경우 숫자, 밑줄을 포함하는 모든 언어의 표현 가능한 문자. 아스키코드인 경우 '[a-zA-Z0-9_]'와 동일

\W 

 유니코드인 경우 숫자, 밑줄과 표현 가능한 문자를 제외한 나머지 문자. 아스키코드인 경우 '[^a-zA-Z0-9_]'와 동일

\d 

 유니코드인 경우 [0-9]를 포함하는 모든 숫자. 아스키 코드인 경우 [0-9]와 동일

\D 

 유니코드인 경우 숫자를 제외한 모든 문자. 아스키코드인 경우 [^0-9]와 동일

\s 

 유니코드인 경우 [ \t\n\r\f\v]를 포함하는 공백 문자. 아스키 코드인 경우에도 동일.

\S 

 유니코드인 경우 공백 문자를 제외한 모든 문자. 아스키코드인 경우 [^ \t\n\r\f\v]와 동일

\b 

 단어의 시작과 끝의 빈 공백

\B 

 단어의 시작과 끝이 아닌 빈 공백 

\\ 

 역슬래시 문자 자체 

\[숫자] 

 지정도니 숫자만큼 일치하는 문자열을 의미 

\A 

 문자열의 시작

\Z

 문자열의 끝 



re 모듈 함수

 함수명

설명 

 re.search(pattern,string[,flags])

 string 전체에 대해 패턴이 존재하는지 검사해서 MatchObjcet 인스턴스를 반환.

 re.match(pattern,string[,flags])

 string이 시작하는 부분부터 패턴이 존재하는지 검사해서 MatchObjcet 인스턴스를 반환

 re.split(pattern,string[,maxsplit=0])

패턴을 구분자로 스트링을 분리해서 리스트로 반환 

 re.findall(pattern,string[,flags])

 스트링에서 패턴과 매치되는 모든 경우의 수를 찾아서 리스트로 반환

 re.finditer(pattern,string[,flags])

 스트링에서 패턴과 일치하는 결과에 대한 iterater 객체를 반환

 re.sub(pattern,repl,string[,count])

스트링에서 패턴과 일치하는 부분에 대해 repl로 교체해서 반환 

 re.subn(pattern,repl,string[,count])

 re.sub()랑 동일하지만 결과로 (결과문자열, 매칭횟수)를 튜플로 반환

 re.escape(string)

 영문자, 숫자가 아닌 문자에 대해서 역슬래시 문자를 추가. 메타 문자를 포함한 문자열을 정규식으로 변경가능

 re.complie(pattern[,flags])

 패턴을 컴파일해서 정규 표현식 객체를 반환


반응형

'Programming > etc' 카테고리의 다른 글

파이썬 2.x 버전과 3.x 버전 차이  (0) 2018.04.22
SMP, MPP, NUMA 병렬 프로세스 기술  (0) 2018.04.21
TCP/IP Socket programming  (0) 2018.04.17
OSI 모델과 TCP/IP 프로토콜  (0) 2018.04.15
파이썬 문자열 메서드 종류  (0) 2018.03.21