Programming Language/Python

[Do it! 점프 투 파이썬 26-28일차] 8장_정규표현식

요호유후 2024. 4. 22. 21:01
반응형

아래의 내용은 'Do it! 점프 투 파이썬' 책을 공부하며 정리하였습니다.

https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K362833219&start=pnaver_02

 

Do it! 점프 투 파이썬

챗GPT를 시작으로 펼쳐진 생성 AI 시대에 맞춰 설명과 예제를 다듬고, 최신 경향과 심화 내용을 보충했다. 또한 이번 개정 2판도 50만 코딩 유튜버인 조코딩과 협업을 통해 유튜브 동영상을 제공해

www.aladin.co.kr

 

오늘은 마지막인 8장 정규 표현식에 대해 정리해보도록 하겠습니다.

 

 

정규 표현식 살펴보기

 

 

정규 표현식(regular expressions)은 복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 고유 문법은 아닙니다. 문자열을 처리하는 모든 곳에서 사용하는 일종의 형식 언어입니다. 정규 표현식은 줄여서 '정규식'이라고도 말합니다. 정규 표현식을 사용하면 코드가 상당히 간결해집니다.

정규표현식 실습1

 

* import re : 정규 표현식을 사용하기 위한 re 모듈 입니다.

 

 

 

정규 표현식 시작하기

 

 

정규 표현식에서는 메타문자(meta characters)를 사용합니다. 메타 문자란, 원래 그 문자가 가진 뜻이 아닌 특별한 의미를 가진 문자를 말합니다.

. ^ $ * + ? {} [] \ | ()

 

 

[] 문자 - 문자 클래스

문자 클래스를 만드는 메타 문자인 [] 사이에는 어떤 문자도 들어갈 수 있습니다. [] 안의 두 문자 사이에 하이픈(-)을 사용하면 두 문자 사이의 범위를 의미합니다. 예를 들어, [a-c]라는 정규 표현식은 [abc]와 동일하고 [0-5]는 [012345]와 동일합니다.

문자 클래스([])안에는 주의해야할 메타 문자가 있는데, 바로 ^입니다. 문자 클래스 안에 ^ 메타 문자를 사용할 경우에는 반대(not)라는 의미를 갖습니다. 예를 들어, [^0-9]라는 정규 표현식은 숫자가 아닌 문자만 매치된다는 의미입니다.

[a-zA-Z] : 모든 알파벳
[0-9] : 모든 숫자
정규 표현식 설명
\d 숫자와 매치됩니다. [0-9]와 동일한 표현식입니다.
\D 숫자가 아닌 것과 매치됩니다. ( = [^0-9])
\s 화이트스페이스(whitespace)문자와 매치됩니다. (화이트스페이스문자 : 스페이스, 탭, 줄바꿈과 같은 공백 문자)
[ \t\n\r\f\v]와 동일한 표현식입니다. 맨앞의 빈칸은 공백 문자(space)를 의미합니다.
\S 화이트스페이스 문자가 아닌 것과 매치됩니다. ( = [^ \t\n\r\f\v])
\w 문자+숫자(alphanumeric)와 매치됩니다. [a-zA-Z0-9_]와 동일한 표현식입니다.
\W 문자+숫자(alphanumeric)가 아닌 문자와 매치됩니다. ( = [^a-zA-Z0-9_])

 

 

.(dot) 문자 - \n을 제외한 모든 문자

.(dot) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됩니다.

* 정규식을 작성할 때 re.DOTALL 옵션을 주면 .(dot) 문자와 \n 문자도 매치됩니다.

a.b
==> "a + 모든문자 + b"

 

 

* 문자

* 문자는 반복을 의미합니다. 사용한 *은 * 바로 앞에 있는 문자 a가 0부터 무한대(무한대라고 표현했지만, 메모리 용량의 한계로 실제로는 약 2억개 정도입니다.)까지 반복될 수 있다는 의미입니다.

 

 

+ 문자

+ 문자는 최소 1번 이상 반복될 때 사용합니다. 즉, *문자가 반복횟수가 0부터라면 +는 반복 횟수가 1부터인 것입니다.

 

 

{} 문자와 ? 문자

{m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지인 문자와 매치할 수 있습니다. 생략된 m은 0과 동일하며, 생략된 n은 무한대(약 2억개 미만)의 의미를 갖습니다. ?메타 문자가 의미하는 것은 {0, 1}입니다.

* {1,}은 +, {0,}은 *와 동일합니다.

*, +, ? 메타 문자는 모두 {m, n}형태로 고쳐 쓰는것이 가능하지만, 이해하기 쉽고 표현도 간결한 *, +, ?메타 문자를 사용하는 것이 좋습니다.

 

 

정규식을 이용한 문자열 검색
메서드 목적
match 문자열의 처음부터 정규식과 매치되는지 조사합니다.
search 문자열 전체를 검색하여 정규식과 매치되는지 조사합니다.
findall 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴합니다.
finditer 정규식과 매치되는 모든 문자열(substring)을 이터레이터 객체로 리턴합니다.

문자열 검색 실습

 

 

 

강력한 정규 표현식의 세계로

 

|

| 메타 문자는 or과 동일한 의미로 사용합니다.

 

 

^

^ 메타 문자는 문자열의 맨 처음과 일치한다는 것을 의미합니다.

 

 

$

$ 메타 문자는 ^ 메타 문자와 반대의 경우입니다. 즉, $는 문자열의 끝과 매치한다는 것을 의미합니다.

 

 

\A

\A는 문자열의 처음과 매치된다는 것을 의미합니다. 전체 문자열의 처음하고만 매치됩니다.

 

 

\Z

\Z는 문자열의 끝과 매치된다는 것을 의미합니다. $ 메타 문자와는 달리 전체 문자열의 끝과 매치됩니다.

 

 

\b

\b는 단어 구분자(word boundary)입니다. 보통 단어는 화이트스페이스에 의해 구분됩니다.

 

 

\B

\B메타 문자는 \b 메타 문자와 반대의 경우입니다. 즉, 화이트스페이스로 구분된 단어가 아닌 경우에만 매치됩니다.

 

 

오늘은 여기까지 Do it! 점프 투 파이썬의 마지막 장인 8장을 정리해보았습니다.

반응형