[ ] 사이의 문자들과 매치
\d
- 숫자와 매치, [0-9]와 동일한 표현식이다.\D
- 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.\s
- whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.\S
- whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.\w
- 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.\W
- 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.사용 예시
🙋♀️ 문자열 "a", "before", "dude"가 정규식 [abc] 어떻게 사용될까?
"a"는 정규식과 일치하는 문자인 "a"가 있으므로 매치
"before"는 정규식과 일치하는 문자인 "b"가 있으므로 매치
"dude"는 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음
a.b
== "a + 모든문자 + b"
사용 예시
🙋♀️문자열 "aab", "a0b", "abc"가 정규식 a.b와 어떻게 매치될까?
"aab"는 가운데 문자 "a"가 모든 문자를 의미하는 .과 일치하므로 정규식과 매치된다.
"a0b"는 가운데 문자 "0"가 모든 문자를 의미하는 .과 일치하므로 정규식과 매치된다.
"abc"는 "a"문자와 "b"문자 사이에 어떤 문자라도 하나는있어야 하는 이 정규식과 일치하지 않으므로 매치되지 않는다.
a[.]b
== "a + Dot(.)문자 + b"
사용 예시
🙋♀️문자열 "aab", "a0b", "abc"가 정규식 a.b와 어떻게 매치될까?
정규식 a[.]b는 "a.b" 문자열과 매치되고, "a0b" 문자열과는 매치되지 않는다.
"c + a(0번 이상 반복) + t"
🐥 반복횟수 0부터
"c + a(1번 이상 반복) + t"
🐥 반복횟수 1부터
"c + a(반드시 2번 반복) + t"
"c + a(2~5회 반복) + t"
"a + b(있어도 되고 없어도 된다) + c"
정규식을 이용한 문자열을 검색하기 위해
우선, 정규식 표현식을 컴파일 해야 한다.
사용예시
import re p = re.compile('[a-z]+')
문자열의 처음부터 정규식과 매치되는지 조사한다.
문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.
re.split(r"([0-9]+)", file)
사용 예시 ) 프로그래머스 - 파일명 정렬
import re
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
사용 예시 ) 프로그래머스 - 다트 게임