정규 표현식의 진짜 힘: HTML도 파싱할 수 있다?
The true power of regular expressions (2012)
정규 표현식은 형식 언어 이론에서 정의된 '정규' 언어만 다룰 수 있다는 오해가 널리 퍼져 있다. 하지만 PCRE 같은 현대적인 정규 표현식은 재귀적 패턴과 서브패턴 참조를 지원하여 문맥 자유 문법을 충분히 매칭할 수 있다. 이 글은 정규 문법의 정의부터 시작해, PCRE를 이용해 문맥 자유 언어를 매칭하는 방법을 보여주고, RFC 5322 이메일 주소를 검증하는 복잡한 정규 표현식 예시를 제시한다. 또한 왼쪽 재귀를 오른쪽 재귀로 변환하는 방법을 설명하며, 정규 표현식이 문맥 자유 언어를 매칭할 수는 있지만 파싱(구문 트리 생성)은 불가능하다는 점을 짚는다.
정규 표현식은 문맥 자유 언어를 매칭할 수 있지만, 일반적으로 파싱(추상 구문 트리 생성)은 불가능하다.