메타문자

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

메타문자는 특별한 의미를 지닌 문자를 의미하며, 이스케이프 처리를 통해 문자 그대로의 의미로 사용할 수 있다. 이스케이프는 정규 표현식, 유닉스 셸, MS-DOS/윈도우 명령 프롬프트, XML/HTML, 프로그래밍 언어, printf 형식 문자열, SQL 등 다양한 환경에서 사용되며, 각 환경에 따라 이스케이프 처리 방식과 메타 문자의 종류가 다르다. 예를 들어, 정규 표현식에서는 백슬래시(\)를 사용하여 메타 문자를 이스케이프하고, SQL에서는 퍼센트 기호(%)와 밑줄(_)을 와일드카드 문자로 사용한다.

메타문자
📚 더 읽어볼만한 페이지
  • 패턴 매칭 - 퇴각검색
    퇴각검색은 해를 찾기 위해 트리 구조로 표현된 후보들을 깊이 우선 탐색 방식으로 탐색하며, 유효하지 않은 후보는 가지치기하여 탐색 시간을 단축하는 알고리즘이다.
  • 패턴 매칭 - 정규 표현식
    정규 표현식은 특정 패턴 문자열 집합을 표현하는 식으로, 스티븐 클레이니가 고안하고 켄 톰슨이 텍스트 편집기에 도입한 후 펄을 거쳐 현재 다양한 프로그래밍 언어와 환경에서 텍스트 처리 및 데이터 검증에 널리 쓰인다.
  • 형식 언어 - 문자열
    문자열은 사람이 읽을 수 있는 텍스트를 저장하고 정보를 전달하거나 받는 데 사용되는 순서가 있는 문자들의 시퀀스로, 다양한 형태의 데이터를 표현하며 유한한 길이를 가지고, 프로그래밍 언어에서 기본 또는 복합 자료형으로 제공되고, 문자 집합과 인코딩 방식에 따라 표현 방식이 달라진다.
  • 형식 언어 - 튜링 기계
    튜링 기계는 앨런 튜링이 제시한 계산 모델로, 테이프 위에서 기계적으로 작동하며, 유한한 상태, 테이프, 헤드, 명령 표를 통해 작동하고, 계산 가능성과 알고리즘의 한계를 연구하는 데 사용된다.
  • 프로그래밍 언어 주제 - 프로그래밍 패러다임
    프로그래밍 패러다임은 프로그래머에게 프로그램 작성 방식을 제시하는 관점 또는 스타일이며, 구조적 프로그래밍을 시작으로 절차적, 객체 지향, 선언형 등으로 발전해 명령형, 선언형, 멀티 패러다임 프로그래밍 언어로 분류된다.
  • 프로그래밍 언어 주제 - 프로그램 최적화
    프로그램 최적화는 컴퓨터 프로그램의 효율성을 높이는 과정으로, 더 효율적인 구현 방식을 선택하거나 불필요한 기능을 제거하여 문제 해결에 집중하며, 다양한 수준에서 플랫폼 의존적이거나 독립적인 기술을 활용하여 수행되지만, 특정한 품질 지표를 개선하기 위해 다른 측면을 희생하는 트레이드오프가 발생할 수 있다.

2. 이스케이프

"메타 문자를 이스케이프 처리한다"는 것은 메타 문자가 가지는 특별한 의미를 제거하고, 문자 그대로의 의미를 가지게 하는 것을 의미한다. 예를 들어, PCRE에서 점(".")은 단일 문자를 나타내지만, 이스케이프 처리하면 문자 그대로 "."로 해석된다.

정규 표현식에서 문자를 이스케이프하는 일반적인 방법은 백슬래시("\")를 앞에 붙이는 것이다. MS-DOS/Windows 명령 프롬프트와 같이 다른 환경에서는 캐럿(^")을 대신 사용하기도 한다.

2.1. 정규 표현식에서의 이스케이프

"메타 문자"를 "이스케이프 처리"한다는 것은 메타 문자의 특별한 의미를 없애고 문자 그대로의 의미를 가지게 하는 것을 말한다. 예를 들어, PCRE에서 점(".")은 하나의 문자를 나타낸다. 정규식 "A.C"는 "ABC", "A3C", "A C"와 같이 여러 문자열에 일치한다. 그러나 "."을 이스케이프 처리하면, 즉 "A\.C"와 같이 쓰면, 문자 그대로의 "."을 의미하게 되어 "A.C"라는 문자열에만 일치하게 된다.

정규 표현식 등에서 문자를 이스케이프 처리하는 일반적인 방법은 백슬래시("\")를 앞에 붙이는 것이다. MS-DOS/Windows 명령 프롬프트와 같이 다른 환경에서는 캐럿(^")을 대신 사용하기도 한다.

3. 다양한 환경에서의 이스케이프

다음은 특정 환경에서 특별한 의미를 갖는 문자들이다.

* 유닉스 셸에서 세미콜론(;)은 문장 구분자이다. 보다 작음 기호(<) 및 보다 큼 기호(>)는 리다이렉션에, 백틱(`)는 명령 대체에 사용된다.
* MS-DOS/윈도우 명령 프롬프트에서 앰퍼샌드(&)는 특별한 의미를 가지며, 보다 작음 기호 및 보다 큼 기호(<, >)는 리다이렉션에 사용된다.
* XMLHTML에서 앰퍼샌드(&)는 HTML 엔티티를 시작한다.
* 많은 프로그래밍 언어에서 문자열은 따옴표(" 또는 ')로 구분된다. 구분 기호 충돌을 피하기 위해 이스케이프 문자를 사용한다. (예: "그는 \"안녕\"이라고 말했다")
* printf 형식 문자열에서 퍼센트 기호(%)는 형식 지정자를 시작하며, '%' 문자 자체는 "%%"로 이스케이프 처리해야 한다.
* SQL에서 퍼센트 기호(%)는 와일드카드 문자로, 밑줄(_)은 임의의 단일 문자와 일치하는 데 사용된다.

3.1. 유닉스 셸

유닉스 셸에서 세미콜론(;)은 문장 구분자로 사용된다. 보다 작음 기호(<) 및 보다 큼 기호(>)는 리다이렉션에 사용되고, 백틱(`)는 명령 대체에 사용된다.

3.2. MS-DOS/윈도우 명령 프롬프트

앰퍼샌드("&")는 특별한 의미를 갖는다. 보다 작음 기호("<") 및 보다 큼 기호(">")는 리다이렉션에 사용된다. 캐럿("^")은 이스케이프 문자로 사용될 수 있다.

3.3. XML/HTML

XMLHTML에서 앰퍼샌드(&)는 HTML 엔티티를 시작하는 데 사용된다.

3.4. 프로그래밍 언어

많은 프로그래밍 언어에서 문자열은 구분 기호인 따옴표(" 또는 ')로 구분되며, 구분 기호 충돌을 피하기 위해 이스케이프 문자가 사용된다. (예: "그는 \"안녕\"이라고 말했다")

3.5. printf 형식 문자열

printf 형식 문자열에서 퍼센트 기호(%)는 형식 지정자를 시작하는 데 사용되며, 문자 그대로의 %를 나타내려면 %%로 이스케이프 처리해야 한다.

3.6. SQL

SQL에서 퍼센트 기호(%)는 와일드카드 문자로 사용된다. 밑줄(_)은 임의의 단일 문자와 일치하는 데 사용된다.