-
Python예제 - 정규식, 정규표현식, re, RegularExpression
* Python 함수
메소드 설명 compile(pattern[, flags]) 입력된 pattern을 컴파일하여 정규식 객체를 리턴 match(pattern, string[, flags]) string의 앞부분에 pattern과 일치하는 검사 하여 MatchObject 리턴 search(pattern, string[, flags]) string의 전체중 pattern과 일치하는 곳이 있는지 찾아 MatchObject 리턴 split(pattern, string[, flags]) pattern을 구분자로 string을 분리하여 리스트로 리턴 findall(pattern, string[, flags]) string에서 pattern을 만족하는 문자열을 리스트로 리턴 finditer(pattern, string[, flags]) string에서 pattern을 만족하는 문자열을 반복자로 리턴 sub(pattern, repl, string[, count=0]) string에서 pattern과 일치하는 부분에 대하여 repl로 교체하여 결과 문자열을 리턴 subn(pattern, repl, string[, count=0]) sub와 동일하나, 결과(결과 문자열, 매칭횟수)를 튜플로 리턴 escape(string) 영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴
(임의의 문자열을 정규식 패턴으로 사용할 경우 유용)* Python 예제
>>> re.search('a', 'asddffff') <re.Match object; span=(0, 1), match='a'> >>> re.search('d', 'asddffff') <re.Match object; span=(2, 3), match='d'> >>> re.search('dd', 'asddffff') <re.Match object; span=(2, 4), match='dd'> >>> re.match('a', 'asddffff') <re.Match object; span=(0, 1), match='a'> >>> re.match('d', 'asddffff') >>>
>>> s1 = "asdfghgfdsa"; print(s1 + " => " + re.sub("[^h]g","GGG", s1)) asdfghgfdsa => asdGGGhgfdsa
* 반복 메타 문자
반복 메타문자 의미 예 * 0회 이상 반복 ab, abc, abbc에 대하여
'ab*c'는 모두 매치.
'b*'는 없음.
'bbb*'는 abbc중 bb에 매치.+ 1회 이상 반복 ab+c는 abc, abbc등과 매치 ? 0회 혹은 1회 ab?c는 ab, abc와 매치. {m} m회 반복 ab{2}는 abb와 매치. {m,n} m회 이상 n회 이하 반복 ab{2,4}c는 abbc, abbbc, abbbbc와 매치 * 문자 클래스
[\-] "-"[0-9] 숫자[^0-9] 숫자가 아닌 문자[A-Fa-f0-9] 16진수[A-Za-z0-9] 영숫자[A-Za-z0-9_] 영숫자 + "_"[^A-Za-z0-9_] 낱말이 아닌 문자[A-Za-z] 알파벳 문자[A-Z] 대문자[a-z] 소문자[ \t] 공백과 탭[\x00-\x1F\x7F] 제어 문자[\x21-\x7E] 보이는 문자[\x20-\x7E] 보이는 문자 및 공백 문자[ \t\r\n\v\f] 공백 문자[^ \t\r\n\v\f] 공백이 아닌 모든 문자(?<=\W)(?=\w)|(?<=\w)(?=\W) 낱말 경계[][!"#$%&'()*+,./:;<=>?@\^_`{|}~-] 구두점* 매칭 메타 문자
매칭 메타 문자 의미 . 줄바꿈 문자를 제외한 모든 문자와 매치
(re.DOTALL모드 사용하면 줄바꿈 문자 매치)^ 문자열의 시작과 매치.
^[0-9] => 숫자로 시작.
re.MULTILINE 모드 사용 시 각 라인의 시작과 매치
[] 메타 기호 안에서는 반대의 문자열과 매치.
[^0-9] => 숫자가 아닌 것으로 시작.$ 문자열의 마지막과 매치
[] 메타 기호 안에서는 순수한 $문자로 매치[] 문자 집합을 나타낸다.
[abc]d => ad, cd 등 포함,
[a-c]는 a~c까지의 범위를 의미.
[a-zA-Z0-9]는 영문자 숫자를 의미.| a|b는 a 또는(or) b의 의미 () 정규식을 그룹으로 묶음 * 이스케이프 기호
\\ : 역슬래쉬 문자 자체를 의미한다.
\d : 모든 숫자와 매치된다. [0-9]
\D : 숫자가 아닌 문자와 매치된다. [^0-9]
\s : 화이트 스페이스 문자와 매치된다. [\t\n\r\f\v]
\S : 화이트 스페이스 문자가 아닌 것과 매치된다. [^\t\n\r\f\v]
\w : 숫자 또는 문자와 매치된다. [a-zA-Z0-9_]
\W : 숫자 또는 문자가 아닌 것과 매치된다. [^a-zA-Z0-9_]
\b : 단어의 경계를 나타낸다. 단어는 영문자 혹은 숫자의 연속 문자열로 가정한다.
\B : \b의 반대로 단어의 경계가 아님을 나타낸다.
유니코드 문자 값
이스케이프 시퀀스
의미
범주
\u0008 \b 백스페이스 \u0009 \t 탭 공백 \u000A \n 줄 바꿈(새 줄) 줄 종결자 \u000B \v
(이 표 아래에 있는 정보 참조)세로 탭 공백 \u000C \f 폼 피드 공백 \u000D \r 캐리지 리턴 줄 종결자 \u0020 공백 공백 \u0022 \" 큰따옴표(") \u0027 \' 작은따옴표(') \u005C \\ 백슬래시(\) \u00A0 줄 바꿈하지 않는 공백 공백 \u2028 줄 구분 기호 줄 종결자 \u2029 단락 구분 기호 줄 종결자 \uFEFF 바이트 순서 표시 공백 'Python' 카테고리의 다른 글
Python예제 - 문자열 속 특수문자 변환 (0) 2018.01.31 Python예제 - ord, hex, chr, unichr (0) 2018.01.31 Python함수 - Cmp 비교 (0) 2018.01.30 Python예제 - 리스트 (0) 2018.01.30 Python예제 - 문자와 아스키코드 변환 (0) 2018.01.30 Python예제 - chardet.detect 캐릭터셋 인코딩 확인 (0) 2018.01.30 Python문법 - if (0) 2018.01.29 Python문법 - with as (0) 2018.01.29