728x90
1) .기호
.은 한 개의 임의의 문자를 나타냅니다.
예를 들어서 정규 표현식이 a.c라고 합시다.
a와 c 사이에는 어떤 1개의 문자라도 올 수 있습니다.
즉, akc, azc, avc, a5c, a!c와 같은 형태는 모두 a.c의 정규 표현식과 매치됩니다.
import re
r=re.compile("a.c")
r.search("kkk") # 아무런 결과도 출력되지 않는다.
r.search("abc")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
(.)은 어떤 문자로도 인식될 수 있기 때문에
abc라는 문자열은 a.c라는 정규 표현식 패턴으로 매치되는 것을 볼 수 있습니다.
2) ?기호
?는 ? 앞의 문자가 존재할 수도 있고, 존재하지 않을 수도 있는 경우를 나타냅니다.
예를 들어서 정규 표현식이 ab?c라고 합시다.
이 경우 이 정규 표현식에서의 b는 있다고 취급할 수도 있고, 없다고 취급할 수도 있습니다.
즉, abc와 ac 모두 매치할 수 있습니다.
import re
r=re.compile("ab?c")
r.search("abbc") # 아무런 결과도 출력되지 않는다.
r.search("abc")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
b가 있는 것으로 판단하여 abc를 매치하는 것을 볼 수 있습니다.
r.search("ac")
<_sre.SRE_Match object; span=(0, 2), match='ac'>
re.match() 와 re.search()의 차이
search()가 정규 표현식 전체에 대해서 문자열이 매치하는지를 본다면,
match()는 문자열의 첫 부분부터 정규 표현식과 매치하는지를 확인합니다.
문자열 중간에 찾을 패턴이 있다고 하더라도, match 함수는 문자열의 시작에서 패턴이 일치하지 않으면 찾지 않습니다.
import re
r=re.compile("ab.")
r.search("kkkabc")
<_sre.SRE_Match object; span=(3, 6), match='abc'>
r.match("kkkabc") #아무런 결과도 출력되지 않는다.
r.match("abckkk")
<_sre.SRE_Match object; span=(0, 3), match='abc'>
re.split()
split() 함수는 입력된 정규 표현식을 기준으로 문자열들을 분리하여 리스트로 리턴합니다.
import re
text="사과 딸기 수박 메론 바나나"
re.split(" ",text)
['사과', '딸기', '수박', '메론', '바나나']
re.findall()
findall() 함수는 정규 표현식과 매치되는 모든 문자열들을 리스트로 리턴합니다.
단, 매치되는 문자열이 없다면 빈 리스트를 리턴합니다.
import re
text="이름 : 김철수
전화번호 : 010 - 1234 - 1234
나이 : 30
성별 : 남"""
re.findall("\d+",text)
['010', '1234', '1234', '30']
출처 : wikidocs.net/21703
반응형
'Python' 카테고리의 다른 글
[pandas]. 사용자의 합계를 구해서 칼럼 추가하기 (feat. groupBy) (0) | 2021.10.27 |
---|---|
[Flask].이미지 데이터를 post 형식으로 flask 서버로 보내는 방법( 이상한 트릭) (0) | 2020.12.03 |
[Python] . 정규표현식 총정리!! ( re , Regular Expression ) (0) | 2020.11.16 |
[Pandas] . DataFrame 생성, 삭제 ,추출 (0) | 2020.10.15 |
[Python] List Comprehension 으로 matrix 다루기 (0) | 2020.10.09 |