import re
#반복을 나타내는 기호
# ? 앞문자가 문자가 0 또는 1번 (0 or 1)
# * 앞문자가 0번 또는 그이상 (0 or 1 more)
# + 앞문자가 1번 또는 그이상 (1 more)
#패턴 정의
pattern1 = re.compile('D?ABC')# ABC or DABC
pattern2 = re.compile('D*ABC')# ABC or DDABC or DDDABC....
pattern3 = re.compile('D+ABC')# DABC or DDABC or DDDABC...
string = 'DDDDDDDd ABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
print(pattern3.search(string))
string = 'DDDDDDDd DABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
print(pattern3.search(string))
string = 'DDDDDDDd DDABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
print(pattern3.search(string))
string = 'DDDDDDDd DDDABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
print(pattern3.search(string))
#결과
======ex) DDDDDDDd ABC
re.Match object; span=(9, 12), match='ABC'
re.Match object; span=(9, 12), match='ABC'
None
======ex) DDDDDDDd DABC
re.Match object; span=(9, 13), match='DABC'
re.Match object; span=(9, 13), match='DABC'
re.Match object; span=(9, 13), match='DABC'
======ex) DDDDDDDd DDAABC
re.Match object; span=(12, 15), match='ABC'
re.Match object; span=(12, 15), match='ABC'
None
======ex) DDDDDDDd DDDABC
re.Match object; span=(11, 15), match='DABC'
re.Match object; span=(9, 15), match='DDDABC'
re.Match object; span=(9, 15), match='DDDABC'
import re
#반복을 나타내는 기호
# {n} 앞문자가 n번 반복
# {m,n} 앞문자가 m번 이상 n번 이하 반복
#패턴 정의
pattern1 = re.compile('D{1}ABC')
pattern2 = re.compile('D{2,5}ABC')
string = 'DDDDDDDd ABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
string = 'DDDDDDDd DABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
string = 'DDDDDDDd DDABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
string = 'DDDDDDDd DDDABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
string = 'DDDDDDDd DDDDDDABC'
print('======ex) ',string)
print(pattern1.search(string))
print(pattern2.search(string))
#결과
======ex) DDDDDDDd ABC
None
None
======ex) DDDDDDDd DABC
re.Match object; span=(9, 13), match='DABC'
None
======ex) DDDDDDDd DDABC
re.Match object; span=(10, 14), match='DABC'
re.Match object; span=(9, 14), match='DDABC'
======ex) DDDDDDDd DDDABC
re.Match object; span=(11, 15), match='DABC'
re.Match object; span=(9, 15), match='DDDABC'
======ex) DDDDDDDd DDDDDDABC
re.Match object; span=(14, 18), match='DABC'
re.Match object; span=(10, 18), match='DDDDDABC'
import re
#패턴 정의
pattern1 = re.compile('[가-힣]')#한글 패턴 찾기
pattern2 = re.compile('[^가-힣]')#한글 패턴이 아닌것 찾기
string = "안녕hello"
print(pattern1.search(string))
print(pattern2.search(string))
#결과
re.Match object; span=(0, 1), match='안'
re.Match object; span=(2, 3), match='h'
import re
#첫번째 단어를 리턴
pattern1 = re.compile('[a-zA-Z]+')
print('ex1)')
string = "hello world"
print(pattern1.search(string))#문자열 전체를 검색하여 정규식에 해당하는 패턴을 리턴
print(pattern1.match(string))#문자열 처음부터 검색하여 정규식에 해당하는 패턴을 리턴
print('ex2)')
string = "11hello world"
print(pattern1.search(string))#문자열 전체를 검색하여 정규식에 해당하는 패턴을 리턴
print(pattern1.match(string))#문자열 처음부터 검색하여 정규식에 해당하는 패턴을 리턴
#결과
ex1)
re.Match object; span=(0, 5), match='hello'
re.Match object; span=(0, 5), match='hello'
ex2)
re.Match object; span=(2, 7), match='hello'
None