[파이썬] 정규 표현식의 매칭 결과 문자열 검색 범위

정규 표현식은 문자열에서 패턴을 찾는 강력한 도구입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다. 정규 표현식의 매칭 결과 문자열을 검색할 때, 어떤 범위 내에서 검색을 수행해야 한다는 것이 중요합니다.

Python의 re 모듈은 다양한 메서드를 제공하며, 이를 활용하여 원하는 범위 내에서 문자열을 검색할 수 있습니다. 몇 가지 예시를 살펴보겠습니다.

전체 문자열에서 매칭 결과 검색하기

가장 간단한 경우는 전체 문자열에서 매칭 결과를 검색하는 것입니다. 다음은 re.match() 메서드를 사용하여 전체 문자열에서 패턴과 일치하는 부분을 검색하는 예시입니다:

import re

string = "Hello, world!"
pattern = r"Hello"

result = re.match(pattern, string)

if result:
    print("매칭 결과:", result.group())
else:
    print("매칭 실패!")

위의 코드에서는 “Hello”라는 패턴을 사용하여 “Hello, world!”라는 문자열을 매칭시킵니다. re.match() 메서드는 문자열의 시작 부분부터 검색을 수행하므로, 전체 문자열에서 매칭 결과를 검색합니다.

특정 범위 내에서 매칭 결과 검색하기

특정 범위 내에서 매칭 결과를 검색해야 하는 경우, 정규 표현식의 매칭 결과 문자열의 검색 범위를 지정해야 합니다. 이 때, re.search() 메서드와 re.finditer() 메서드를 사용할 수 있습니다.

re.search() 사용하기

re.search() 메서드를 사용하면 전체 문자열이 아닌 특정 범위 내에서 매칭 결과를 검색할 수 있습니다. 다음은 특정 인덱스 범위에서 매칭 결과를 검색하는 예시입니다:

import re

string = "Hello, world!"
pattern = r"world"

result = re.search(pattern, string[7:])  # 인덱스 7부터 끝까지 검색

if result:
    print("매칭 결과:", result.group())
else:
    print("매칭 실패!")

위의 코드에서는 “world”라는 패턴을 사용하여 문자열의 인덱스 7부터 끝까지 매칭을 검색합니다. re.search() 메서드를 사용하여 특정 범위 내에서 매칭 결과를 검색할 수 있습니다.

re.finditer() 사용하기

re.finditer() 메서드를 사용하면 특정 범위 내에서 모든 매칭 결과를 검색할 수 있습니다. 다음은 특정 인덱스 범위에서 모든 매칭 결과를 검색하는 예시입니다:

import re

string = "Hello, world! Hello, hello!"
pattern = r"Hello"

results = re.finditer(pattern, string)  # 전체 문자열에서 매칭 결과를 검색

for result in results:
    print("매칭 결과:", result.group())

위의 코드에서는 “Hello”라는 패턴을 사용하여 전체 문자열에서 매칭 결과를 검색합니다. re.finditer() 메서드를 사용하여 모든 매칭 결과를 검색할 수 있습니다.

결론

Python의 re 모듈을 사용하여 정규 표현식의 매칭 결과 문자열을 검색할 때는 검색 범위를 정확히 지정해야 합니다. re.match() 메서드를 사용하여 전체 문자열에서 검색하거나, re.search() 메서드와 re.finditer() 메서드를 사용하여 특정 범위 내에서 검색할 수 있습니다. 매칭 결과를 정확히 검색하기 위해서는 원하는 범위를 지정하는 것이 중요합니다.