취준/[개발공부] python
06. 정규표현식
우금붕
2023. 7. 4. 19:05
01. 정규표현식 - 기본
찾거나 바꿔야 할 문자열 규칙이 복잡할 때 사용하면 좋음
- 메타 문자 meta characters
그 문자가 가진 뜻이 아닌 특별한 용도로 사용되는 문자
. ^ $ * ? { } [ ] \ | ( )
🌻 문자 클래스 []
'[ 와 ] 사이 문자들과 매치'
정규식 | 문자열 | 매치 여부 |
[abc] | a | Yes |
flaver | Yes | |
like | No |
자주 사용되는 문자 클래스 | 의미 | |
[a-zA-Z] | 알파벳 모두 | |
[0-9] | 숫자 모두 | |
[^0-9] | 숫자가 아닌 문자 모두 | |
\d | 숫자와 매치. [0-9]와 동일 | |
\D | 숫자가 아닌 문자와 매치. [^0-9]와 동일 | |
\s | whitespace 문자와 매치. [ \t\n\r\f\v]와 동일 | |
\S | whitespace 문자가 아닌 것과 매치. [^ \t\n\r\f\v]와 동일 | |
\w | 문자+숫자(alphanumeric)와 매치. [a-zA-Z0-9]와 동일 | |
\W | 문자+숫자(alphanumeric)기 아닌 것과 매치. [a-zA-Z0-9]와 동일 |
🌻 Dot(.)
줄 바꿈 문자 \n 제외한 모든 문자와 매치됨
정규식 | 문자열 | 매치여부 |
a.b 'a + 모든 문자 + b' |
aab | Yes |
a0b | Yes | |
abc | No | |
a[.]b 'a + Dot(.) 문자 + b' |
a.b | Yes |
a0b | No |
🌻 반복 *
정규식 | 문자열 | 매치 여부 |
ab*c 문자 바로 앞 b가 0번 이상 반복 시 |
ac | Yes |
abc | Yes | |
abbbc | Yes |
🌻 반복 +
정규식 | 문자열 | 매치 여부 |
ab+c 문자 바로 앞 b가 1번 이상 반복 시 |
ac | No |
abc | Yes | |
abbbc | Yes |
🌻 반복 {m, n}
정규식 | 문자열 | 매치 여부 |
ab{2}c 문자 바로 앞 b가 2번 이상 반복 시 |
abc | No |
abbc | Yes | |
ab{2, 5}c 문자 바로 앞 b가 2~5번 반복 시 |
abc | No |
abbc | Yes | |
abbbbbc | Yes |
🌻 ?
정규식 | 문자열 | 매치 여부 |
ab?c 문자 바로 앞 b가 있어도, 없어도 된다 {0, 1}과 동일 |
abc | Yes |
ac | Yes |
02. 정규식을 이용한 문자열 검색
메서드 | 목적 |
match() | 문자열 처음부터 정규식과 매치되는지 |
search() | 문자열 전체를 검색하여 정규식과 매치되는지 |
findall() | 정규식과 매치되는 모든 문자열을 리스트로 반환 |
finditer() | 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 반환 |
🌻 match 객체의 메서드
메서드 | 목적 |
group() | 매치된 문자열을 리턴 group(0) 매치된 전체 문자열 group(n) n번째 그룹에 해당되는 문자열 |
start() | 매치된 문자열의 시작 위치를 반환 |
end() | 매치된 문자열의 끝 위치를 반환 |
span() | 매치된 문자열의 (시작, 끝) 튜플 반환 |
03. 컴파일 옵션
옵션명 | 약어 | 설명 |
DOTALL | S | 줄바뀜 문자 포함 모든 문자와 매치할 수 있도록 |
IGNORECASE | I | 대, 소문자와 관계 없이 매치할 수 있도록 |
MULTILINE | M | 여러 줄과 매치할 수 있도록 |
VERBOSE | X | verbose 모드로 사용할 수 있도록 |