문자 클래스 [ ]
문자 클래스로 만들진 정규식은 "[ ] 사이의 문자들과 매치" 라는 의미를 갖는다.
[ ] 안에는 어떤 문자도 들어갈 수 있다.
[abc] : a, b, c중 한 개의 문자와 매치
예제1
import re
pat = re.compile('[abc]')
# match : 문자열의 처음부터 일치하는지 확인
print(pat.match('a')) # 일치
print(pat.match('before')) # 일치
print(pat.match('dude')) # 불일치
결과
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 1), match='b'>
None
예제2
# ['file1', 'file3', 'file5', 'file7' ]
pat2 = re.compile('file[1357]')
print(pat2.match('file1')) # 일치
print(pat2.match('file2')) # 불일치
print(pat2.match('file3')) # 일치
print(pat2.match('filea')) # 불일치
# match는 처음부터 일치하는지 확인한다.
print(pat2.match('file1 filea')) # 0~5번 인덱스에서 문자열이 발견됐다
# serach는 문자열 전체에서 일부 일치하는지 확인한다.
print(pat2.search('file2 file3')) # 6 ~ 11번 인덱스에서 문자열이 발견됐다
결과
<re.Match object; span=(0, 5), match='file1'>
None
<re.Match object; span=(0, 5), match='file3'>
None
<re.Match object; span=(0, 5), match='file1'>
<re.Match object; span=(6, 11), match='file3'>
하이픈(-) 을 사용한 문자 클래스
- [A-Za-z] : 알파벳 모두
- [0-9] : 숫자
# 모든 문자, 숫자
pat1 = re.compile('file[A-Za-z]')
pat2 = re.compile('file[0-9]')
print(pat1.match('fileA')) # 일치
print(pat1.match('fileX')) # 일치
print(pat1.match('filec')) # 일치
print(pat1.match('filef')) # 일치
print(pat1.match('file ')) # 불일치
print(pat2.match('file1')) # 일치
결과
<re.Match object; span=(0, 5), match='fileA'>
<re.Match object; span=(0, 5), match='fileX'>
<re.Match object; span=(0, 5), match='filec'>
<re.Match object; span=(0, 5), match='filef'>
None
<re.Match object; span=(0, 5), match='file1'>
# 모든 숫자
pat3 = re.compile('file\d')
# 모든 숫자가 아닌
pat2 = re.compile('file[^0-9]')
pat3 = re.compile('file\D')
print(pat2.match('file1')) # 일치
print(pat3.match('fileA')) # 불일치
print(pat3.match('file3')) # 일치
print(pat3.match('file ')) # 불일치
결과
None
<re.Match object; span=(0, 5), match='fileA'>
None
<re.Match object; span=(0, 5), match='file '>
자주 사용하는 문자 클래스
- \d , [0-9] : 숫자인 한 문자
- \D , [^0-9] : 숫자가 아닌 한 문자
- \s , [ \t\n\r] : 화이트스페이스 -> 공백, 탭, Enter등을 찾을 때 사용
- \S , [^ \t\n\r] : 화이트스페이스가 아닌 한 문자
- \w , [0-9A-Za-z_] : 변수명 규칙 ( 일반 문자 , 숫자 , _ )
- \W , [^0-9A-Za-z_] : 일반문자 , 숫자 , _ 가 아닌 한 문자
pat1 = re.compile('a b')
pat2 = re.compile('a\sb')
print(pat1.match('a b')) # 일치
print(pat1.match('a\tb')) # 불일치
print(pat1.match('a\nb')) # 불일치
print(pat2.match('a b')) # 일치
print(pat2.match('a\tb')) # 일치
print(pat2.match('a\nb')) # 일치
결과
<re.Match object; span=(0, 3), match='a b'>
None
None
<re.Match object; span=(0, 3), match='a b'>
<re.Match object; span=(0, 3), match='a\tb'>
<re.Match object; span=(0, 3), match='a\nb'>
'IT 차곡차곡 > Python' 카테고리의 다른 글
[Python] 정규표현식4 - match 객체의 메서드 (0) | 2021.06.23 |
---|---|
[Python] 정규표현식3 - Dot(.), 반복(*, +, {m,n}) (0) | 2021.06.23 |
[Python] 정규표현식 1 (0) | 2021.06.22 |
[Python] 문자열 거꾸로 출력하기 (0) | 2021.06.18 |