Regex: Character Class 의 뜻??

Regex 에서 Character Class 란, 대괄호를 사용하는 방법이다. 그렇게 알아왔고, 적당히 사용했었다.

오늘, 문득 이 용어의 정확한 뜻이 궁금해졌다. 대충 ‘의미’가 아니라, 그야말로 어휘로서 의미. 영어로 하자면, lexical meaning 이라고나 할까?

미리 말하자면, 의미를 알고 보니, 단어만 보면 그 뜻을 알 수 있게끔 용어를 골랐다는 생각이 든다. 뭔 소린가 하면..

[a-z] 의 뜻은, 목적 문자열 중, 어느 ‘한’ 글자가 a 부터 z 까지일 경우 ‘일치'(match)라고 판단을 내리라는 의미다. 두 글자도 안되고, 세 글자도, 따라서 단어는 더더욱 안된다.
따라서, 한 글자를 뜻하는 Character 가 이 용어의 앞부분으로 선택됐다.
우리말로 바꾸자면, ‘문자’가 되겠다.

문제는 Class 다. 요즘 한국 사람들도 ‘클래스’라는 표현을 참 많이 쓰는데, 그 의미로는 저기에 갖다 붙일 수가 없다. 그 이전의 클래스들의 의미, 즉 ‘학급’, ‘등급’ 등도 잘 맞질 않는다.

한영사전을 뒤져봤지만, 적절한 뜻을 찾질 못했다. 종류, 부류, 부문 등으로 번역해놨지만, 여기에 딱 맞지는 않는다.
한국어 위키피디아에서는, 이런 경우 늘 그렇듯, 그냥 원어를 사용했다. ‘문자 클래스’라고.

영어 사전에선 적절한 뜻을 찾을 수 있었다.

  • Collins : A class of things is a group of them with similar characteristics.
  • Macmillian : a group of things, animals, or people with similar features or qualities

종류, 부류 등이 위 풀이와 비슷하긴 하지만, 딱 맞는다고 보기에는 좀 애매한 면이 있다.

그러다가, 교과서(?)를 찾아보았다. 첫 문장에 이렇게 나와있었다.

With a “character class”, also called “character set”, you can tell the regex engine to match only one out of several characters. ….


답은 여기서 나왔다. ‘class = set’. 중국어 위키를 찾아보니, 字符集合 이라 번역했음을 알 수 있었다. (字符 는 ‘문자부호’로, 컴퓨터나 전자통신에 사용하는 알파벳/숫자등을 일컫는다고 사전에 나와있다. 우리말엔 이런 단어가 없다. 그냥 ‘문자’로 전산/비전산에서 모두 같은 용어를 쓰고 있다.)

따라서, 우리말로 가장 적절하게 번역하자면, ‘문자 집합’이 되겠다.
그런데, 선택은 딱 한 글자만 할 수 있는데 왜 문자집합이란 이름을 붙였나?

그 해답도 위에 있다. ‘여러 문자들 중, 한 글자만 일치시키게 Regex 에 명령을 내린다.’
그 여러 문자는 a~z 일 수도 있고, A~Z 일 수도, 숫자일 수도 있지만, 일치될 수 있는 글자수는 딱 한글자뿐이다.

일치될 수 있는 후보 문자群을, Character Class 라 부른다.

One Comment

안녕하세요. 글 남겨주셔서 고맙습니다.