마크다운 헤딩과 특정 헤딩 하의 텍스트 매칭을 위한 정규 표현식(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
와 그 하위의 텍스트를 찾습니다.
(# Heading 2\n)
:# Heading 2
라는 텍스트와 줄바꿈 문자를 찾습니다.(.*?)(?=(#|$))
: 이 부분은 가능한 한 가장 짧은 문자열을 찾되 다음#
헤딩이나 문자열의 끝($
)이 나타날 때까지입니다.
왜 이 정규 표현식이 효과적인가?
- 비탐욕적 매칭:
.*?
은 가능한 한 가장 짧은 문자열을 찾아서 효율성을 높입니다. - 전방탐색:
(?=(#|$))
는 다음 헤딩이 나타나거나 문자열이 끝날 때까지만 매칭을 하기 때문에 원하는 텍스트만 정확하게 추출할 수 있습니다.
이렇게 정밀하게 작성된 정규 표현식은 마크다운 문서에서 원하는 정보를 효율적으로 추출할 수 있게 해줍니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.