Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식(Regex)으로 문자열에서 최대 숫자 값 추출하는 방법

정규식(regex)을 사용해 문자열에서 최대 숫자 값을 추출하는 가장 간단한 방법은 다음 두 단계로 진행하는 것입니다.

  • re 모듈을 활용해 문자열에 포함된 모든 숫자를 추출합니다.
  • 추출한 숫자들 중 최댓값을 찾습니다.

예제 입력

예를 들어 아래와 같은 입력 문자열이 있다고 가정해 보겠습니다.

"이 도시에는 121005명이 살고 있으며, 인근 도시에는 1587469명, 먼 곳의 도시에는 18775994명이 살고 있습니다."

이 문자열에서 얻어야 하는 출력 결과는 다음과 같습니다.

18775994

정규식 패턴 이해하기

여기서는 "\d+" 정규식 패턴을 사용합니다. \d는 숫자 한 자리(digit)를 의미하고, 그 뒤에 붙는 플러스(+) 기호는 연속된 숫자 중 가장 긴 문자열, 즉 하나의 완전한 숫자 전체를 매칭하도록 해줍니다.

re 모듈로 구현하기

파이썬의 re 패키지를 사용하면 다음과 같이 간단하게 구현할 수 있습니다.

import re

# 문자열에서 모든 숫자 값을 추출합니다.
occ = re.findall("\d+", "There are 121005 people in this city, 1587469 in the neighbouring city and 18775994 in a far off city.")

# 추출한 숫자 값을 문자열에서 정수(int)로 변환합니다.
num_list = map(int, occ)

# 최댓값을 찾아 출력합니다.
print(max(num_list))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

18775994

코드 동작 원리 정리

  • re.findall(): 패턴과 일치하는 모든 부분을 리스트 형태로 반환합니다. 여기서는 ["121005", "1587469", "18775994"]가 반환됩니다.
  • map(int, ...): findall의 결과는 문자열이므로, max()로 올바르게 비교하기 위해 정수형으로 변환해야 합니다.
  • max(): 변환된 정수 리스트에서 가장 큰 값을 반환합니다.

만약 음수나 소수점 숫자까지 처리해야 한다면 패턴을 -?\d+\.?\d*처럼 확장하여 활용할 수 있습니다.