본문 바로가기

언어/Python

[ Python ] 글 작성시 흔히 하는 실수를 정규 표현식으로 찾기

반응형

문서 작성 시 반복되는 단어(예: "the the")를 찾아내는 것은 정규 표현식을 사용하여 쉽게 처리할 수 있습니다. 이러한 실수는 흔히 발생하며, 정규 표현식을 사용하여 이를 찾아내고 수정할 수 있습니다.

다음은 파이썬의 re 모듈을 사용하여 반복되는 단어를 찾아내는 방법에 대한 설명과 예제입니다.

1. 정규 표현식 패턴 설명

반복되는 단어를 찾기 위해 사용할 정규 표현식 패턴은 다음과 같습니다:

  • \b(\w+)\b\s+\1\b

이 패턴의 각 부분은 다음을 의미합니다:

  • \b: 단어 경계(Word boundary)를 의미합니다.
  • (\w+): 하나 이상의 단어 문자(알파벳, 숫자, 밑줄)와 일치하며, 이 일치 부분을 첫 번째 캡처 그룹에 저장합니다.
  • \s+: 하나 이상의 공백 문자와 일치합니다.
  • \1: 첫 번째 캡처 그룹과 일치하는 동일한 단어를 찾습니다.
  • \b: 단어 경계를 의미합니다.

2. 파이썬 코드 예제

import re

# 예제 문자열
text = "This is a test text with the the repeated words. Another example would be is is here."

# 정규 표현식 패턴
pattern = r'\b(\w+)\b\s+\1\b'

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

# 결과 출력
print("Repeated words found:", matches)

출력:

Repeated words found: ['the', 'is']

이 예제에서는 re.findall() 함수를 사용하여 반복되는 단어를 찾습니다. re.IGNORECASE 플래그를 사용하여 대소문자를 무시하고 검색합니다.

3. 반복 단어 위치 찾기

반복되는 단어의 위치를 찾기 위해서는 re.finditer()를 사용할 수 있습니다. 이를 통해 일치하는 각 반복 단어의 위치를 얻을 수 있습니다.

import re

# 예제 문자열
text = "This is a test text with the the repeated words. Another example would be is is here."

# 정규 표현식 패턴
pattern = r'\b(\w+)\b\s+\1\b'

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

# 결과 출력
for match in matches:
    print(f"Repeated word: '{match.group()}' found at position: {match.start()} to {match.end()}")

출력:

Repeated word: 'the the' found at position: 23 to 30
Repeated word: 'is is' found at position: 66 to 71

이 예제에서는 re.finditer()를 사용하여 반복되는 단어의 위치를 포함한 상세 정보를 출력합니다. 각 일치 항목에 대해 시작 위치와 끝 위치를 출력합니다.

4. 요약

  • 반복되는 단어를 찾기 위한 정규 표현식 패턴은 \b(\w+)\b\s+\1\b입니다.
  • re.findall()을 사용하여 모든 반복되는 단어를 리스트로 추출할 수 있습니다.
  • re.finditer()를 사용하여 반복되는 단어와 그 위치를 상세히 확인할 수 있습니다.
  • re.IGNORECASE 플래그를 사용하여 대소문자를 무시하고 검색할 수 있습니다.

이러한 방법을 사용하면 문서 작성 시 발생할 수 있는 반복 단어 실수를 쉽게 찾아내고 수정할 수 있습니다.

반응형