정규식을 사용하는 가장 많은 사용사례는
"패턴이 일치하는가"를 조사하는 것입니다.
정규식에서 패턴은 "정규식으로 쓰여진 검색표현"을 뜻합니다.
이게 무슨 의미냐면
한 문서 안에 다양한 길이의 숫자들로만 구성되어 있다고 할 때,
우리는 (띄어쓰기나 줄바꿈 등으로 구분된) 세 자리의 숫자만 찾고 싶다고 가정하겠습니다.
일반적인 검색의 경우에는 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
'기타 > 정규표현식 입문자를 위한 튜토리얼' 카테고리의 다른 글
문자열 탐색 중 가장 강력한 방법인 정규표현식 (0) | 2023.01.02 |
---|
댓글