취준/[개발공부] 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 모드로 사용할 수 있도록