본문 바로가기
기타/정규표현식 입문자를 위한 튜토리얼

1. 가장 기본이 되는 중요한 패턴 "..."

by 일코 2023. 1. 2.

정규식을 사용하는 가장 많은 사용사례는

"패턴이 일치하는가"를 조사하는 것입니다.

정규식에서 패턴"정규식으로 쓰여진 검색표현"을 뜻합니다.

이게 무슨 의미냐면

한 문서 안에 다양한 길이의 숫자들로만 구성되어 있다고 할 때,

우리는 (띄어쓰기나 줄바꿈 등으로 구분된) 세 자리의 숫자만 찾고 싶다고 가정하겠습니다.

 

일반적인 검색의 경우에는 001~999까지 숫자를 직접 결정해야 하기 때문에

모든 경우를 찾아내려면 999번을 반복해야 합니다.

 

하지만 정규식이면 단 한 번에 모든 탐색을 끝낼 수 있습니다.

바로 "..."을 통해서요.

말줄임표가 아니고, 엄연한 정규식입니다...

 

한 번 예를 들어볼까요?

아래와 같은 임의의 문서 중에서 세 자리 숫자를 전부 찾아서 출력하고 싶습니다.

예시 코드를 먼저 보여드리겠습니다.

이렇게 간단한 코드로 문제를 해결할 수 있다니 벌써부터 신이 납니다 으흐흐~
import re

text = """
123 234 45 1234 2345 245 7634 34 134612357123 5143 1 34134 62354623 4
3245 2363457431345  3223423423 23 234 2 2323 24 24576353452 3  23
23 4 23524  254 2534 23452 264 75 57 426 25 523 2362 457 254724 572 53
234 623 52 5477 5422 754332 42 346 2634 3257 754225 37234 32 23 42 3
2 5432 332 2 3 235  2535 3 7 74 745 45 2455 242 35234 66 2432 5 2424 75
"""

pattern = re.compile("...")  # 패턴 정의
result = re.findall(pattern=pattern, string=text)  # text 내에서 전부 찾기
print(result)

 
['123', ' 23', '4 4', '5 1', '234', ' 23', '45 ', '245', ' 76', '34 ', '34 ', 
'134', '612', '357', '123', ' 51', '43 ', '1 3', '413', '4 6', '235', '462', 
'3 4', '324', '5 2', '363', '457', '431', '345', '  3', '223', '423', '423', 
' 23', ' 23', '4 2', ' 23', '23 ', '24 ', '245', '763', '534', '52 ', '3  ', 
'23 ', '4 2', '352', '4  ', '254', ' 25', '34 ', '234', '52 ', '264', ' 75',
' 57', ' 42', '6 2', '5 5', '23 ', '236', '2 4', '57 ', '254', '724', ' 57', 
'2 5', '234', ' 62', '3 5', '2 5', '477', ' 54', '22 ', '754', '332', ' 42', 
' 34', '6 2', '634', ' 32', '57 ', '754', '225', ' 37', '234', ' 32', ' 23', 
' 42', '2 5', '432', ' 33', '2 2', ' 3 ', '235', '  2', '535', ' 3 ', '7 7', 
'4 7', '45 ', '45 ', '245', '5 2', '42 ', '352', '34 ', '66 ', '243', '2 5', 
' 24', '24 ']

 

자! 모든 세 자리 숫자가 출력되었습니다!

라고 말하려는데 '잠깐.. 결과가 이상하잖아?'

결과가 예상했던 것보다 훨씬 많아 보이는데요?

오히려 본문보다 길어진 것 같은데?

" 23"이나 "4 4", "2 5"... 이런 것들까지 튀어나오면 뭔가 잘못된 거 아니야?

이게 정상입니다.

왜냐면 스페이스와 줄바꿈도 엄연히 하나의 문자이기 때문입니다ㅜ

이러면 곤란한데요..

스페이스나 줄바꿈은 빼고 진짜 "숫자"만 탐색하고 싶은데?

이러면 "..."을 쓸 수 없잖아?

 

그래서 다음 포스팅에서는

"..." 대신 숫자 세 개만 제대로 찾아내는 패턴은 무엇인지

...다시 알아보겠습니다.

이러면서 배워가는 거죠.
학습내용을 더 잘 기억하기 위한
이번 튜토리얼 시리즈의 컨셉입니다.

 

 


국내 유일의 파이썬+한컴오피스 업무자동화 입문강의

 

움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피 - 인프런 | 강의

파이썬으로 아래아한글을 다루는 짧은 예제코드들을 소개하고, 중간중간의 결과를 GIF로 보여드립니다. 동영상 강의가 아니지만 오히려 빠르게 배울 수 있고, 따라하기도 쉽습니다., - 강의 소개

www.inflearn.com

 

댓글