✍🏻 python
# 문자, 숫자가 아닌 데이터를 찾아 없애기 import re # python에서 지원하는 정규지원식 라이브러리 string = '(!#!@#Dave!@#!@#!)' print(re.sub('[^A-Za-z0-9]', '', string)) # Dave
✍🏻 python
# string의 문자열 중 'D.A'에 해당하는 것을 찾아 'Dave'로 바꿔라 import re string = 'DDA DP DPA DA D2A' re.sub('D.A', 'Dave', string) # Dave DP Dave DA Dave
✍🏻 python
# ? 앞 문자가 0번 또는 1번 표시되는 패턴(없어도되고, 있어도 됨) import re pattern = re.compile('D?A') print(pattern.search("A")) # <re.Match object; span=(0, 1), match='A'> print(pattern.search("DA")) # <re.Match object; span=(0, 2), match='DA'> print(pattern.search("DDDDDDA")) # <re.Match object; span=(5, 7), match='DA'>
*
는 *
기준으로 왼쪽 문자가 0번 또는 그 이상 반복되는 패턴✍🏻 python
# ? 앞 문자가 0번 또는 1번 이상 반복되는 패턴 import re pattern = re.compile('D*A') # * 왼쪽 문자에 D가 없거나, 여러번 반복 print(pattern.search("A")) # <re.Match object; span=(0, 1), match='A'> print(pattern.search("DA")) # <re.Match object; span=(0, 2), match='DA'> print(pattern.search("DDDDDDDDDDDDDDDDDDDDDDDDDDDDA")) # <re.Match object; span=(0, 29), match='DDDDDDDDDDDDDDDDDDDDDDDDDDDDA'>```
✍🏻 python
# ? 앞 문자가 1번 또는 그 이상 반복되는 패턴 import re pattern = re.compile('D+A') print(pattern.search("A")) # None print(pattern.search("DA")) # <re.Match object; span=(0, 2), match='DA'> print(pattern.search("DDDDDDDDDDDDDDDDDDDDDDDDDDDDA")) # <re.Match object; span=(0, 29), match='DDDDDDDDDDDDDDDDDDDDDDDDDDDDA'>
✍🏻 python
# {n} 기준 왼쪽 문자열이 n번 반복되는 패턴 import re pattern = re.compile('AD{2}A') # => A + {}왼쪽 문자인 D가 2번 반복 + A print(pattern.search("ADA")) # None print(pattern.search("ADDA")) # <re.Match object; span=(0, 4), match='ADDA'> print(pattern.search("ADDDA")) # None
# {m,n} 기준 왼쪽 문자열이 m번에서 n번까지 반복되는 패턴 import re pattern = re.compile('AD{2,6}A') # {m,n} 은 붙여 써야 함 {m, n} 으로 쓰면 안됨 print(pattern.search("ADDA")) # <re.Match object; span=(0, 4), match='ADDA'> print(pattern.search("ADDDA")) # <re.Match object; span=(0, 5), match='ADDDA'> print(pattern.search("ADDDDDDDDDA")) # None
✍🏻 python
import re pattern = re.compile('[abcdefgABCDEFG]') print(pattern.search("a1234")) # <re.Match object; span=(0, 1), match='a'> print(pattern.search("z1234")) # None
✍🏻 python
import re pattern = re.compile('[a-z]') # a부터 z까지 표현하는 정규식 print(pattern.search("k1234")) # <re.Match object; span=(0, 1), match='k'> print(pattern.search("Z1234")) # None
pattern = re.compile('[a-zA-Z]') # a~z, A~Z까지 표현하는 정규식 print(pattern.search("Z1234")) # <re.Match object; span=(0, 1), match='Z'>
pattern = re.compile('[a-zA-Z0-9]') # a~z, A~Z, 0~10 까지 표현하는 정규식 print(pattern.search("1234---")) # <re.Match object; span=(0, 1), match='1'> print(pattern.search("---------------!@#!@$!$%#%%%#%%@$!$!---")) # None
import re pattern = re.compile('[가-힣]') 모든 한글 print(pattern.search("안")) # <re.Match object; span=(0, 1), match='안'>
1) match() 와 search() 함수
- match()는 문자열을 정규표현식과 일치하는지 앞에서부터 찾고 처음부터 다르면 비교 진행 안함
- serch()는 문자열 전체에서 찾아주기 때문에 어디서에서든 포함되어있으면 일치하는 부분을 반환해줌
✍🏻 pythonimport re pattern = re.compile('[a-z]+') # 소문자 a~z까지 print(pattern.match('Dave')) # None print(pattern.search("Dave")) # <re.Match object; span=(1, 4), match='ave'>
2) findall() 함수
- 어떤 문자열과 정규식을 비교해서 리스트 형식으로 반환함
✍🏻 python
# 정규표현식과 매칭되는 모든 문자열을 리스트로 반환 import re pattern = re.compile('[a-z]+') findalled = pattern.findall('Game of Life in Python') print (findalled) # ['ame', 'of', 'ife', 'in', 'ython']
pattern2 = re.compile('[A-Za-z]+') findalled2 = pattern2.findall('Game of Life in Python') print (findalled2) # ['Game', 'of', 'Life', 'in', 'Python']