포스트

마크다운 헤딩과 특정 헤딩 하의 텍스트 매칭을 위한 정규 표현식(Regex)

정규 표현식(Regex)이란?

정규 표현식은 문자열에서 특정 패턴을 찾거나 대체할 때 사용하는 강력한 도구입니다. 프로그래밍 언어나 텍스트 편집기에서 일반적으로 사용됩니다.

문제 상황

StackOverflow에서 나온 문제는 마크다운 문서에서 특정 헤딩과 그 하위의 텍스트를 찾는 정규 표현식을 작성하는 것이었습니다. 이 문제는 많은 웹 개발자나 데이터 분석가가 마주치는 일반적인 문제입니다.

해결 방법

다음은 이 문제를 해결하기 위한 정규 표현식 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re

text = """# Heading 1
Some text under heading 1

## Subheading 1.1
Text under subheading 1.1

# Heading 2
Some text under heading 2"""

pattern = r"(# Heading 2\n)(.*?)(?=(#|$))"

matches = re.findall(pattern, text, re.S)

for match in matches:
    print(match[0] + match[1])

이 정규 표현식은 # Heading 2와 그 하위의 텍스트를 찾습니다.

  1. (# Heading 2\n): # Heading 2 라는 텍스트와 줄바꿈 문자를 찾습니다.
  2. (.*?)(?=(#|$)): 이 부분은 가능한 한 가장 짧은 문자열을 찾되 다음 # 헤딩이나 문자열의 끝($)이 나타날 때까지입니다.

왜 이 정규 표현식이 효과적인가?

  1. 비탐욕적 매칭: .*?은 가능한 한 가장 짧은 문자열을 찾아서 효율성을 높입니다.
  2. 전방탐색: (?=(#|$))는 다음 헤딩이 나타나거나 문자열이 끝날 때까지만 매칭을 하기 때문에 원하는 텍스트만 정확하게 추출할 수 있습니다.

이렇게 정밀하게 작성된 정규 표현식은 마크다운 문서에서 원하는 정보를 효율적으로 추출할 수 있게 해줍니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.