반응형
re.findall()
함수와 group()
메서드를 함께 사용하는 것은 일반적으로 일치하는 모든 패턴의 서브그룹을 추출할 때 유용합니다. re.findall()
함수는 모든 일치 항목을 리스트로 반환하며, 각 항목은 문자열이거나 튜플일 수 있습니다.
1. re.findall()
과 group()
의 차이점
re.findall()
: 주어진 패턴과 일치하는 모든 문자열을 리스트로 반환합니다. 패턴에 그룹이 있다면, 그룹화된 부분 문자열을 튜플로 반환합니다.group()
:re.Match
객체의 메서드로, 특정 일치 그룹을 반환합니다.
2. 예제와 출력
1. 단순 패턴 매칭
import re
# 예제 문자열
string = "My phone number is 123-456-7890 and 987-654-3210."
# 정규 표현식 패턴
pattern = r"\d{3}-\d{3}-\d{4}"
# re.findall을 사용하여 일치하는 부분 찾기
matches = re.findall(pattern, string)
print(matches)
출력:
['123-456-7890', '987-654-3210']
이 예제에서는 re.findall()
함수가 전화번호 패턴과 일치하는 모든 문자열을 리스트로 반환합니다.
2. 그룹화된 패턴 매칭
import re
# 예제 문자열
string = "My email is example@test.com and test@example.com."
# 정규 표현식 패턴 (그룹화 포함)
pattern = r"(\w+)@(\w+)\.(\w+)"
# re.findall을 사용하여 일치하는 부분 찾기
matches = re.findall(pattern, string)
print(matches)
출력:
[('example', 'test', 'com'), ('test', 'example', 'com')]
이 예제에서는 re.findall()
함수가 이메일 패턴의 각 부분을 그룹화하여 튜플로 반환합니다. 각 튜플은 로컬 파트, 도메인, 최상위 도메인을 포함합니다.
3. re.finditer()
와 group()
사용
re.finditer()
는 re.findall()
과 비슷하지만, 일치 항목에 대한 반복자(iterator)를 반환합니다. 이 반복자를 사용하면 각 일치 항목에 대해 group()
메서드를 호출할 수 있습니다.
import re
# 예제 문자열
string = "My phone number is 123-456-7890 and 987-654-3210."
# 정규 표현식 패턴 (그룹화 포함)
pattern = r"(\d{3})-(\d{3})-(\d{4})"
# re.finditer을 사용하여 일치하는 부분 찾기
matches = re.finditer(pattern, string)
for match in matches:
print("Full match:", match.group())
print("Group 1:", match.group(1))
print("Group 2:", match.group(2))
print("Group 3:", match.group(3))
print("Start position:", match.start())
print("End position:", match.end())
print("Span:", match.span())
print()
출력:
Full match: 123-456-7890
Group 1: 123
Group 2: 456
Group 3: 7890
Start position: 19
End position: 31
Span: (19, 31)
Full match: 987-654-3210
Group 1: 987
Group 2: 654
Group 3: 3210
Start position: 36
End position: 48
Span: (36, 48)
이 예제에서는 re.finditer()
를 사용하여 각 일치 항목에 대해 반복하며, group()
메서드를 사용하여 전체 일치 및 각 그룹을 개별적으로 출력합니다.
3. 요약
re.findall()
은 패턴과 일치하는 모든 부분 문자열을 리스트로 반환합니다. 패턴에 그룹이 포함된 경우, 각 일치는 튜플로 반환됩니다.re.finditer()
는 반복자를 반환하며, 이 반복자를 사용하여 각 일치 항목에 대해group()
메서드를 호출할 수 있습니다.group()
메서드는re.Match
객체에서 특정 일치 그룹을 반환하는 데 사용됩니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] re.sub()를 사용해서 텍스트 교체하기 (2) | 2024.07.22 |
---|---|
[ Python ] 글 작성시 흔히 하는 실수를 정규 표현식으로 찾기 (2) | 2024.07.21 |
[ Python ] re.findall() 사용하기 (0) | 2024.07.21 |
[ Python ] re.search() 사용하기 (이름 찾기) (0) | 2024.07.21 |
[ Python ] re.match() 사용하기 (전화번호) (0) | 2024.07.21 |