파이썬은 정규표현식을 위해서 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 |