[파이썬] 정규 표현식의 매칭 결과 문자열 정렬

정규 표현식(regular expression)은 문자열 패턴을 매칭시키기 위해 사용되는 강력한 도구입니다. 이를 통해 문자열을 검색, 추출, 대체하는 등 다양한 작업을 수행할 수 있습니다. 하지만 정규 표현식으로 매칭된 결과의 순서를 조정해야 할 때가 종종 있습니다. 이번 블로그 포스트에서는 Python에서 정규 표현식 매칭 결과 문자열을 정렬하는 방법에 대해 알아보겠습니다.

1. re.findall()re.finditer() 함수

Python의 re 모듈은 정규 표현식을 이용한 매칭 작업을 수행할 수 있는 다양한 함수를 제공합니다. 그 중에서도 re.findall()re.finditer() 함수를 활용하면 매칭된 결과를 리스트 또는 이터레이터 형태로 반환받을 수 있습니다.

2. 매칭 결과 정렬하기

매칭된 결과를 원하는 순서로 정렬하기 위해서는 Python의 내장 함수인 sorted()를 이용하면 됩니다. sorted() 함수는 정렬 기준으로 사용할 키를 지정할 수 있는 key 매개변수를 제공합니다. 이를 활용하여 매칭 결과를 원하는 순서로 정렬할 수 있습니다.

다음은 정규 표현식 매칭 결과를 길이순으로 정렬하는 예제입니다.

import re

pattern = r'\b\w+\b'  # 단어에 매칭하는 패턴
text = 'Hello world, this is a test.'

matches = re.findall(pattern, text)
sorted_matches = sorted(matches, key=lambda x: len(x))  # 길이순으로 정렬

for match in sorted_matches:
    print(match)

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

a
is
this
test
Hello
world

위 코드에서는 sorted() 함수의 key 매개변수에 람다 함수를 사용하여 각 매칭 결과의 길이를 기준으로 정렬하였습니다. 따라서 출력 결과에서 길이가 가장 짧은 문자열인 ‘a’부터 길이가 가장 긴 문자열인 ‘world’까지 순서대로 출력됩니다.

3. 추가적인 정렬 기준 사용하기

sorted() 함수의 key 매개변수를 활용하면 다양한 정렬 기준을 사용할 수 있습니다. 예를 들어, 매칭 결과를 알파벳 순서로 정렬하고 싶다면 key=lambda x: x.lower()와 같이 소문자로 변환한 값을 기준으로 정렬하면 됩니다. 동일한 정렬 기준을 가진 매칭 결과는 원래 순서를 유지하며 정렬됩니다.

아래는 알파벳 순서로 매칭 결과를 정렬하는 예제입니다.

import re

pattern = r'\b\w+\b'  # 단어에 매칭하는 패턴
text = 'Hello world, this is a test.'

matches = re.findall(pattern, text)
sorted_matches = sorted(matches, key=lambda x: x.lower())  # 알파벳 순으로 정렬

for match in sorted_matches:
    print(match)

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

a
Hello
is
test
this
world

위 코드에서는 sorted() 함수의 key 매개변수에 람다 함수를 사용하여 각 매칭 결과를 소문자로 변환한 값으로 기준을 설정하였습니다. 이러한 기준으로 매칭 결과가 정렬되면, 대문자와 소문자를 구분하지 않고 알파벳 순서대로 정렬된 결과를 얻을 수 있습니다.

정규 표현식의 매칭 결과 문자열 정렬은 텍스트 처리 작업에서 많이 활용되는 기능 중 하나입니다. Python의 내장 함수인 sorted()re 모듈의 함수를 활용하여 원하는 순서로 매칭 결과를 정렬할 수 있습니다. 이를 통해 편리하게 텍스트 분석 및 처리 작업을 수행할 수 있습니다.