-
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
정규 표현식은 메타 문자를 사용하여 특별한 의미를 갖습니다.
예를 들어 문자 클래스 []를 사용한 [0-9], [a-zA-Z], [^0-9], [^a-zA-Z]와 같은 정규 표현식은
- \d : 숫자와 매치
- \D : 숫자가 아닌 것과 매치
- \s : whitespace 문자와 매치
- \S : whitespace가 아닌 것과 매치
- \w : 문자 + 숫자와 매치
- \W : 문자 + 숫자가 아닌 것과 매치
not을 뜻하는 ^는 대문자와 같습니다.
- a.b = a+모든 문자+b
- a[.]b = a+Dot(.)문자 + b
- ca*t = a가 몇번이고 반복됨 ( 0번 반복 가능 )
- ca+t = a가 1번 이상 반복
- ca{n}t = a가 반드시 n번 반복
- cat{2,5}t = a가 2-5회 반복
- ab?c = b가 있어도 되고 없어도 됨
python에는 re라는 정규 표현식을 지원하는 라이브러리가 있습니다. 정규 표현식을 쉽게 사용할 수 있죠
https://www.geeksforgeeks.org/python-splitting-text-and-number-in-string/
Python | Splitting Text and Number in string - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
아래와 같이 코딩해봅시다.
- match
match를 쓰면 문자열의 처음이 매치되는지 확인합니다.
import rep = re.compile('[a-z]')m = p.match("wee")print("wee에 대한 결과:", m)m = p.match("95wee")print("95wwee에 대한 결과:",m)- serach
search는 문자열 전체를 검사합니다.
m = p.match("95wee")m2 = p.search("95wee")print("95wwee에 대한 결과(match):",m)print("95wwee에 대한 결과(search):",m2)- findall 은 다음과 같이 작동합니다.
- finditer는 findall과 같습니다. 하지만 결과를 이터레이터 객체로 돌려줍니다.
p = re.compile('[a-z]')p2 = re.compile('[a-z]+')res = p.findall("wee ji won is so hungry")res2 = p2.findall("wee ji won is so hungry")print("print(findall [a-Z] 결과:", res)print("print(findall [a-Z]+ 결과:", res2)- 기타 함수를 알아봅시다.
- group : 결과 출력
- start : 문자열이 시작하는 index
- end : 문자열이 끝나는 index
- span : 문자열의 시작과 끝
m = p2.search("95 wee")print("group:", m.group())print("start:", m.start())print("end:", m.start())print("span:", m.span())- 아래와 같이 한번에 사용할 수도 있습니다.
m = re.match('[a-z]+',"95 wee")
- DOTALL 옵션은 \n를 포함해서 검색합니다.
- I : 대소문자 구별 없이
- M : 여러 라인에 걸쳐 검색합니다.
wee is so hungry becasue she couldn't eat anything in the morning wee always hungry
p = re.compile('[a-z]')m = p.match('a\nb')print(m)p = re.compile('a.b', re.DOTALL)m = p.match('a\nb')print(m)p = re.compile("^weeji\s\w+")p2 = re.compile("^weeji\s\w+", re.MULTILINE)data = """weeji wonweeji twoweeji three"""print("multiline 옵션 끔:", p.findall(data))print("multiline 옵션 켬:", p2.findall(data))위지원데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨
'2020년 > Development' 카테고리의 다른 글
list value를 가진 dictionary 정렬 (0) 2020.06.03 파이썬 전역변수 사용하는 방법 (0) 2020.05.29 시간 복잡도 (0) 2020.04.28 자료구조와 알고리즘 시각화 사이트 (0) 2020.04.28 에라테스토네스의 체 (0) 2020.04.27