URL은 정규 언어일까?

ilotoki·2023년 10월 23일
0
post-thumbnail

해당 문법이 정규 언어인지 여부는 정규 표현식으로 표현할 수 있는지 여부를 확인하는 데에 중요한 역할을 하기에 알아두면 좋다.
예를 들어 HTML은 정규 언어가 아니기 때문에(이 글에 따르면 문맥 자유 언어라고 한다) 정규 표현식으로 파싱하는 것은 불가능하고 별도의 파서를 사용해야 한다는 점은 널리 밈으로써도 널리 알려져 있다.

URL을 파싱하는 regex를 만들던 중 문득 다음과 같은 질문을 떠올렸다.

그렇다면 URL은 정규 언어일까?

이 질답에 따르면 URI(URL보다 조금 더 넓은 개념이다.)는 아마도 정규 언어일 것이라고 한다. 여기에 아마도가 붙은 이유는 말 그대로 알 수 없을 수도 있기 때문이다.
정규 언어와 문맥 자유 언어를 분간하는 것이 항상 가능한 것이 아니기 때문이다. 하지만 일반적으로 정규 언어가 될 수 없는 몇 가지 특성들을 가지고 있지 않기 때문에(예를 들어 recursive하다거나, 명백하게 문맥 자유 언어만 가지고 있는 특성을 가지고 있다거나) 알 수 없다는 것이다.
물론 누군가가 나서서 열심히 URL이 정규 언어인지에 대해 연구한 뒤 결과를 발표한다면 아마 증명이 가능할지도 모르지만 어쨌든 간단한 URL은 정규 표현식으로도 충분히 작성이 가능할 듯 보인다.
PS) 하지만 RFC 3986 외에 별도의 규칙을 가지는 URL은 정규 언어가 아닐 수 있다.

0개의 댓글