re 라이브러리는 정규 표현식을 지원하여 패턴을 가지는 문자열을 분석 또는 조작하고자 할 때 사용할 수 있는 파이썬 표준 라이브러리입니다.
아래의 코드는 임의 문자열에 정의한 패턴('숫자3개-숫자4개-숫자4개')이 존재하는지를 검사하는 코드입니다.
import re
data = """
A001 010-0001-street1
A002 010-0002-street2
T003 010-0003-0003
T004 010-x004-0004
T005 010-0005-0005
T006 010-x006-0006
T007 010-0007-0007
"""
p = re.compile(r'\d{3}-\d{4}-\d{4}')
m = p.search(data) # Match 객체를 반환
print(m)
if m:
print(m.group()) # 일치하는 모든 문자열
print(m.span())
print(data[m.start():m.end()+1])
else:
print('no match')
fillall() 함수를 이용하면 패턴과 일치하는 모든 문자열을 확인할 수 있습니다.
import re
data = """
A001 010-0001-street1
A002 010-0002-street2
T003 010-0003-0003
T004 010-x004-0004
T005 010-0005-0005
T006 010-x006-0006
T007 010-0007-0007
"""
p = re.compile(r'\d{3}-\d{4}-\d{4}')
m = p.findall(data)
for n in m:
print(n)
만약 영문 대소문자를 구분하지 않고자 한다면 compile()의 매개변수 flags에 re.IGNORECASE를 입력합니다.
import re
data = """
미 FTC, 아마존 아이로봇 인수 관련 조사 착수
"""
# p = re.compile('ftc')
p = re.compile('ftc', re.IGNORECASE)
# p = re.compile('ftc', re.I)
m = p.findall(data)
for n in m:
print(n)
제공 함수들
re.compile(pattern, flags=0) 정규 표현식(pattern)을 입력받아 Pattern 객체를 반환 |
|
re.search(pattern, string, flags=0) string의 처음을 시작으로 pattern과 일치하는지 검사한 후 Match 객체를 반환 |
|
re.match(pattern, string, flags=0) string 전체 내용에서 pattern과 일치하는 부분이 있는지를 검사한 후 Match 객체를 반환 |
|
re.findall(pattern, string, flags=0) string 전체 내용에서 pattern과 일치하는 부분을 모두 찾은 후 반환 |
|
re.split(pattern, string, maxsplit=0, flags=0) string에 대하여 pattern을 구분자로 하는 리스트를 반환 |
|
re.sub(pattern, repl, string, count=0, flags=0) string에서 pattern과 일치하는 부분을 repl 내용으로 교체한 후 반환 |
정규 표현식
. | newline을 제외한 임의 문자 1개 만약 flag로 re.DOTALL이 정의되면 newline도 포함 |
^ | 문자열의 시작 re.search('^python', 'python hello') 만약 flag로 re.MULTILINE(또는 re.M)이 정의되면, 각 라인(행)이 해당 문자열로 시작하는지 설정 |
$ | 문자열의 끝 re.search('python$', 'hello python') 만약 flag로 re.MULTILINE(또는 re.M)이 정의되면, 각 라인(행)이 해당 문자열로 끝나는지 설정 |
* | 임의 문자가 0회 이상 반복 |
+ | 임의 문자가 1회 이상 반복 |
? | 임의 문자가 0회 또는 1회 사용됨 |
{m} | 임의 문자가 m회 반복 |
{m,n} 또는 {m,} 또는 {,n} |
임의 문자가 m~n회 반복 {m,}은 m 이상 {,n}은 n 이하 |
[ ] | 문자의 집합 [ ] 내 문자 '-'으로 문자의 범위 정의가 가능 : (예) [a-z] , [0-5][0-9] , [0-9a-fA-F] [-a] 또는 [a-] 또는 [a\-z]의 '-'는 문자 '-' 자체를 의미 [ ] 내 특수 문자( '(', ')', '+', '*' )는 특수 문자 자체를 의미 [ ] 내 첫번째 특수 문자 '^'는 이후 정의되는 문자를 제외한다는 의미 |
| | A|B의 표현은 A 또는 B를 의미 re.match(r'Isaac|ISACC', 'Isaac Newton, physicist') |
( ) | 정규식을 그룹화함 re.match(r'(\w+) (\w+)', 'Isaac Newton, physicist') |
\b | \w와 \W 사이 경계(빈칸)을 명시 r'\bfoo\b'는 'foo', 'foo.', '(foo)', 'bar foo baz'와 일치하나 'foobar' 또는 'foo3'와는 일치하지 않음 |
\B | \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] |
'코딩 > 파이썬 표준 라이브러리' 카테고리의 다른 글
[Python] 텍스트 파일 내용 복사 붙이기 - shutil.copyfileobj (0) | 2021.06.18 |
---|---|
[Python][str] startswith 메서드로 문자열의 시작 문자 비교하기 (0) | 2021.05.25 |
[Python][json] JSON 파일 읽기 (0) | 2021.05.10 |
[Python] os 및 os.path로 폴더/파일 관리 (0) | 2020.11.18 |
[CSV] 6장. 딕셔너리 데이터를 CSV 파일에 쓰기 (0) | 2020.10.31 |