Python:re
Compile
정규식 컴파일은 아래와 같이 적용할 수 있다. 컴파일할 경우 정규식을 일일이 입력하지 않아도 된다.
참고로 대소문자를 구분하지 않는 방법은 아래와 같다.
반복 메타 문자
메타 문자 | 의미 |
| 0회 이상 반복 |
| 1회 이상 반복 |
| 0회 or 1회 |
| m회 반복 |
| m회부터 n회까지 반복 |
매칭 메타 문자
메타 문자 | 의미 |
| 줄바꿈 문자를 제외한 모든 문자와 매치됨 |
| 문자열의 시작과 매치됨 |
| 문자열의 마지막과 매치됨 |
| 문자 집합 중 한 문자를 의미 |
| 또는(or)를 의미 |
| 정규식을 그룹으로 묶음 |
이스케이프 기호
종류 | 설명 |
| 역슬래쉬 문자 자체 |
| 모든 숫자와 매치됨 |
| 숫자가 아닌 문자와 매치됨 |
| 화이트 스페이스 문자와 매치됨 |
| 화이트 스페이스가 아닌 것과 매치됨 |
| 숫자 또는 문자와 매치됨 |
| 숫자 또는 문자가 아닌 것과 매치됨 |
| 단어의 경계를 나타냄. 단어는 영문자 혹은 숫자의 연속 문자열 |
| 단어의 경계가 아님을 나타냄 |
| 문자열의 처음에만 일치 |
| 문자열의 끝에만 일치 |
최소 매칭을 위한 정규식
기회 | 의미 |
| |
| |
| |
| |
정규 표현식에서 사용 가능한 플래그
플래그 | 내용 |
| 대소문자를 구별하지 않는다 |
| |
| |
| |
| |
| 정규식 안의 공백은 무시된다 |
re모듈의 주요 메소드
메소드 | 설명 |
| pattern을 컴파일하여 정규식 객체를 반환 |
| string의 시작부분부터 pattern이 존재하는지 검사하여 MatchObject 인스턴스를 반환 |
| string의 전체에 대해서 pattern이 존재하는지 검사하여 MatchObject 인스턴스를 반환 |
| pattern을 구분자로 string을 분리하여 리스트로 반환 |
| string에서 pattern을 만족하는 문자열을 리스트로 반환 |
| string에서 pattern을 만족하는 문자열을 반복자로 반환 |
| string에서 pattern과 일치하는 부분에 대하여 repl로 교체하여 결과 문자열을 반환 |
| sub와 동일하나, 결과로(결과문자열, 매칭횟수)를 튜플로 반환 |
| 영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴. (임의의 문자열을 정규식 패턴으로 사용할 경우 유용) |
Match 객체
Match객체는 match()
, search()
의 수행 결과로 생성되며, 검색된 결과를 효율적으로 처리할 수 있는 기능 제공.
메소드 | 속성 |
| 입력받은 인덱스에 해당하는 매칭된 문자열 결과의 부분 집합을 반환합니다. 인덱스가 '0'이거나 입력되지 않은 경우 전체 매칭 문자열을 반환합니다. |
| 매칭된 결과를 튜플 형태로 반환 |
| 이름이 붙여진 매칭 결과를 사전 형태로 반환 |
| 매칭된 결과 문자열의 시작 인덱스를 반환. (인자로 부분 집합의 번호나 명시된 이름이 전달된 경우, 그에 해당하는 시작 인덱스를 반환) |
| 매칭된 결과 문자열의 종료 인덱스를 반환. (인자로 부분 집합의 번호나 명시된 이름이 전달된 경우, 그에 해당하는 종료 인덱스를 반환) |
| 원본 문자열에서 검색을 시작하는 위치입니다. |
| 원본 문자열에서 검색을 종료하는 위치입니다. |
| 매칭된 결과 집합에서 마지막 인덱스 번호를 반환. (일치된 결과가 없는 경우 에는 None을 반환) |
| 매칭된 결과 집합에서 마지막으로 일치한 이름을 반환. (정규식의 매칭 조건에 이름이 지정되지 않았거나 일치된 결과가 없는 경우 None 반환) |
| 매칭의 대상이 되는 원본 문자열입니다. |
match vs search
-
re.match()
: 대상 문자열의 시작부터 검색을 하여 결과를 반환. -
re.search()
: 대상 문자열 전체에 대해서 검색을 수행하여 결과를 반환. -
re.findall()
: 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴한다. -
re.finditer()
: 정규식과 매치되는 모든 문자열(substring)을 iterator 객체로 리턴한다.
Match object
match
, search
등의 결과로 리턴되었던 Match object는 아래와 같은 정보를 갖고 있다.
-
group()
: 매치된 문자열을 리턴한다. -
start()
: 매치된 문자열의 시작 위치를 리턴한다. -
end()
: 매치된 문자열의 끝 위치를 리턴한다. -
span()
: 매치된 문자열의 (시작, 끝) 에 해당되는 튜플을 리턴한다.
Example
Properties dictionary
아래와 같은 형식의 프로퍼티가 있다고 가정한다.
아래와 같이 읽을 수 있다.
import re
def readProperties():
with open(PROPERTIES_NAME, 'rb') as f:
result = {}
for line in f:
name = str(re.match(r'^.*=', line).group()).strip()
value = str(line[len(name):]).strip()
name = str(name[:-1]).strip()
result[name] = value
return result
Substitution
\1
같은 인자로 그룹 번호로 치환 가능.
See also
- Python
- Python:re - 정규식.
- Python:fnmatch - 유닉스 파일명 패턴 일치.
Favorite site
- 7.2. re — Regular expression operations
- Python HOWTOs: Regular Expression HOWTO
- 파이썬 – 정규식표현식(Regular Expression) 모듈 1
- [추천] 점프 투 파이썬 - 정규표현식
- ┗System∑Sec†ion┛ :: 파이썬 – 정규식표현식(Regular Expression) 모듈
References
-
System_Section-Python-Regular_Expression_module.pdf ↩