해당 문제는 여기에서 확인하실 수 있습니다.
import re # 정규 표현식 모듈을 가져옵니다.
# 1부터 9 사이의 숫자로 시작하고 그 뒤에 0개 이상의 숫자가 오는 패턴을 찾습니다.
regex = r'[1-9]\d*'
# 검색 대상 문자열입니다.
search_target = '''
Luke Skywarker 02-123-4567 luke@daum.net
다스베이더 070-9999-9999 darth_vader@gmail.com
princess leia 010 2454 3457 leia@gmail.com
'''
# 정규 표현식과 일치하는 모든 부분을 찾아 리스트로 반환합니다.
result = re.findall(regex, search_target)
# 찾은 결과를 각 줄로 나누어 출력합니다.
print("\n".join(result))
[1-9]
: 이 부분은 문자 집합을 나타냅니다. 대괄호 []
안에 있는 문자들은 해당 위치에 올 수 있는 문자를 정의합니다. 여기서는 1-9
이므로 1부터 9까지의 숫자 중 하나를 의미합니다. 즉, 이 정규 표현식으로 찾고자 하는 문자열은 1에서 9 사이의 숫자로 시작해야 합니다.
\d*
: 이 부분은 숫자를 나타내는 특수 문자 클래스 \d
와 수량자 *
로 구성되어 있습니다. - \d
는 모든 숫자(0-9)를 의미합니다. - *
는 바로 앞의 요소(\d
)가 0번 이상 반복될 수 있음을 의미합니다. 즉, 숫자가 없거나 여러 개가 이어질 수 있습니다.
종합적으로, 정규 표현식 r'[1-9]\d*'
는 다음 조건을 만족하는 문자열을 찾습니다.
- 첫 번째 문자: 1부터 9 사이의 숫자 중 하나여야 합니다.
- 두 번째 문자 이후: 0개 이상의 숫자(0-9)가 올 수 있습니다.
결론적으로, 위 정규 표현식은 0으로 시작하지 않는 모든 양의 정수를 찾습니다. 예를 들어, '1', '9', '123', '5000' 등은 이 패턴과 일치하지만, '0', '05', '-1' 등은 일치하지 않습니다.