re.compile('패턴', re.S) ---> 모든 문자(줄 바꿈 포함)
re.compile('패턴', re.I) ---> 대소문 구분 X
re.compile('패턴', re.M) ---> 모든 라인 매칭
re.compile('패턴', re.X) ---> 주석 등 편의 기능 사용 가능
re.compile('패턴', re.A) ---> ASCII만을 사용
re.compile('패턴').match(문자열) --> 문자열 처음이 정규식 매칭 여부 판단
re.compile('패턴').search(문자열) --> 문자열 전체에서 정규식 매칭 여부 판단
re.compile('패턴').findall(문자열) --> 정규식과 매칭되면 리스트로 반환
re.compile('패턴').finditer(문자열) --> 정규식과 매칭되면 순환가능 객체로 반환
re.compile('패턴').split(문자열) --> 패턴대로 문자열 분할
re.compile('패턴').sub(대체문구, 문자열) --> 패턴을 대체문구로 대체함
re.compile('패턴').fullmatch(문자열) --> 문자열 전체가 정규식에 매칭되는지 여부 판단
group(숫자) ---> 일치한 문자열의 그룹에서 숫자에 해당하는 문자열을 반환
groups(default = None) ---> 일치한 문자열의 모든 그룹을 반환
groupdict(default = None) ---> 일치한 문자열의 패턴을 딕셔너리 값으로 반환
expand(문자열) ---> 일치한 문자열의 그룹에 대해 옵션값에 해당하는 문자열로 반환
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.search(정규표현식, 문자열)
print(type(결과))
print(dir(결과))
<class 're.Match'>
['class', 'class_getitem', 'copy', 'deepcopy'
,'delattr', 'dir', 'doc', 'eq', 'format'
, 'ge', 'getattribute', 'getitem', 'gt', 'hash'
, 'init', 'init_subclass', 'le', 'lt', 'ne', 'new'
, 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof'
, 'str', 'subclasshook', 'end', 'endpos', 'expand', 'group'
, 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
결과.start()
결과.end()
23
문자열[결과.start(): 결과.end()]
'age : 9'
결과.group(2)
'9'
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.findall(정규표현식, 문자열)
결과
[('age', '9'), ('height', '130')]
d = dict(결과)
d
{'age': '9', 'height': '130'}
print(type(결과))
print(dir(결과))
<class 'list'>
['add', 'class', 'class_getitem', 'contains', 'delattr', 'delitem', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'gt', 'hash', 'iadd', 'imul', 'init', 'init_subclass', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'reversed', 'rmul', 'setattr', 'setitem', 'sizeof', 'str', 'subclasshook', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.finditer(정규표현식, 문자열)
결과
<callable_iterator at 0x7f6d9a3de1c0>
for i in 결과:
print(i)
print(type(i))
print(dir(i))
<re.Match object; span=(16, 23), match='age : 9'>
<class 're.Match'>
['class', 'class_getitem', 'copy', 'deepcopy', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'gt', 'hash', 'init', 'init_subclass', 'le', 'lt', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
<re.Match object; span=(25, 37), match='height : 130'>
<class 're.Match'>
['class', 'class_getitem', 'copy', 'deepcopy', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'gt', 'hash', 'init', 'init_subclass', 'le', 'lt', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
for i in 결과:
print(i)
# print(type(i))
# print(dir(i))
print(i.start(), i.end())
print(i.group())
<re.Match object; span=(16, 23), match='age : 9'>
16 23
age : 9
<re.Match object; span=(25, 37), match='height : 130'>
25 37
height : 130
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.split(정규표현식, 문자열)
결과
['name : kimnini, ',
'age',
'9',
', ',
'height',
'130',
', email : kimnini-2@naver.com']
import re
정규표현식 = r','
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.split(정규표현식, 문자열)
결과
['name : kimnini', ' age : 9', ' height : 130', ' email : kimnini-2@naver.com']
import re
정규표현식 = r','
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = re.sub(정규표현식," !!!", 문자열)
결과
'name : kimnini !!! age : 9 !!! height : 130 !!! email : kimnini-2@naver.com'
정규표현식 = re.compile(',')
문자열 = 'name : kimnini, age : 9, height : 130, email : kimnini-2@naver.com'
결과 = 정규표현식.sub(" !-!", 문자열)
결과
'name : kimnini !-! age : 9 !-! height : 130 !-! email : kimnini-2@naver.com'
import re
정규표현식 = re.compile(r'([a-zA-Z])([1-9])')
문자열 = 'a3b2c3'
결과 = 정규표현식.findall(문자열)
결과
[('a', '3'), ('b', '2'), ('c', '3')]
s = ' '
for i, j in 결과:
s += i * int(j)
s
'aaabbccc'
import re
정규표현식 = r'(?P<one>\d+)-(?P<two>\d+)-(?P<three>\d+) (?P<four>\w+)'
문자열 = '1234-45678-89012 우리은행'
결과 = re.match(정규표현식, 문자열)
결과.expand('\g<four> !!! \g<one> \g<two> \g<three> ')