본문 바로가기

언어/Python

[ Python ] re.findall() 사용하기

반응형

re.findall 함수는 파이썬의 re 모듈에서 제공하는 함수로, 주어진 문자열에서 정규 표현식 패턴과 일치하는 모든 부분 문자열을 찾아 리스트로 반환합니다. re.findall은 패턴이 문자열에서 일치하는 모든 부분을 검색하여 결과를 리스트로 제공합니다.

1. re.findall 사용법

import re

result = re.findall(pattern, string, flags=0)
  • pattern: 정규 표현식 패턴입니다.
  • string: 검색할 문자열입니다.
  • flags: 선택적 인수로, 정규 표현식의 동작을 수정하는 플래그입니다.

2. 플래그

  • re.IGNORECASE 또는 re.I: 대소문자를 구분하지 않습니다.
  • re.MULTILINE 또는 re.M: 여러 줄 모드. ^$가 각 줄의 시작과 끝을 의미하게 됩니다.
  • re.DOTALL 또는 re.S: 점(.)이 개행 문자(\n)도 포함하도록 합니다.

3. 예제와 출력

1. 기본 예제

import re

# 예제 문자열
string = "The rain in Spain stays mainly in the plain."

# 정규 표현식 패턴
pattern = r"\bin\b"

# re.findall을 사용하여 일치하는 부분 찾기
matches = re.findall(pattern, string)

print(matches)

출력:

['in', 'in']

2. 숫자 찾기 예제

import re

# 예제 문자열
string = "My phone number is 123-456-7890. Call me at 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']

3. 대소문자 무시 예제

import re

# 예제 문자열
string = "Hello hello HeLLo hElLo"

# 정규 표현식 패턴
pattern = r"hello"

# re.findall을 사용하여 일치하는 부분 찾기 (대소문자 무시)
matches = re.findall(pattern, string, re.IGNORECASE)

print(matches)

출력:

['Hello', 'hello', 'HeLLo', 'hElLo']

4. 그룹화 예제

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')]

5. 여러 줄 모드 예제

import re

# 예제 문자열
string = """Start of string
Pattern in line 1
Pattern in line 2
End of string"""

# 정규 표현식 패턴
pattern = r"^Pattern"

# re.findall을 사용하여 일치하는 부분 찾기 (여러 줄 모드)
matches = re.findall(pattern, string, re.MULTILINE)

print(matches)

출력:

['Pattern', 'Pattern']

이 예제들은 re.findall 함수를 사용하여 문자열에서 정규 표현식 패턴과 일치하는 모든 부분을 찾는 방법을 보여줍니다. 각 예제는 실제로 실행 가능한 코드와 그에 따른 출력을 포함하고 있습니다. re.findall은 일치하는 모든 항목을 리스트로 반환하기 때문에, 특정 패턴을 여러 번 검색할 때 유용합니다.

반응형