데이터 정렬 요소는 일반적으로 정렬 컨텍스트에서 참조됩니다.
많은 언어에서 데이터 정렬 (사전처럼 정렬)은 문자별로 수행되지 않습니다. 예를 들어, 체코 어에서는 영어 와 같이 ch
정렬하지 않고 정렬 하기 위해 전체적으로 간주됩니다. 그것은 (우리가 여기에 문자를 참조 할 수 없습니다, 문자 조합 요소의 하위 집합) 사이에서 그 종류의 조합시 요소 와 .cg
ci
h
i
이제 정규식과 어떤 관련이 있습니까? , 왜 대괄호 표현식에서 조합 요소를 참조하고 싶습니까? .
글쎄, 괄호 안의 표현은 순서를 사용합니다. 예를 들어의에서 와 사이 [c-j]
의 문자 를 원합니다 . 당신 은요? 오히려 거기에 조합 요소를 원할 것입니다. 체코 로케일의 경기에서 :c
j
[h-i]
ch
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[h-i]o'
cho
따라서 대괄호 표현식에 여러 조합 요소를 나열 할 수 있으면 개별적으로 나열 할 수도 있습니다. [a-cch]
그 사이에 그 조합 요소를 일치합니다 a
및 c
및 c
및 h
문자를. a-c
그리고 ch
collating 요소 를 가지려면 새로운 문법이 필요합니다 :
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[a-c[.ch.]]o'
cho
(사이에있는 것들 a
과 c
그리고 ch
하나).
이제 세상은 아직 완벽하지 않으며 아마 결코 그렇지 않을 것입니다. 위의 예는 GNU 시스템에 있었고 작동했습니다. 조합 요소 의 또 다른 예는 e
UTF-8의 결합 급성 악센트를 사용할 수 있습니다 ( $'e\u0301'
처럼 렌더링 $'\u00e9'
됨 é
).
é와 é는 하나의 문자로 표현되고 다른 하나는 2로 표현된다는 점을 제외하고 는 동일한 문자 입니다.
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
일부 시스템에서는 제대로 작동하지만 다른 시스템에서는 제대로 작동하지 않습니다 (예 : GNU 시스템 제외). 그리고 그것은 여부 불분명 $'[[.\ue9.]]'
에만 일치해야 $'\ue9'
또는 둘 모두 $'\ue9'
와 $'e\u301'
.
알파벳이 아닌 스크립트 또는 다른 지역별 정렬 순서를 가진 스크립트는 말할 것도없고 ffi
, 간단한 API로 다루기가 까다로워지는 one ( 한 문자로) 와 같은 것들도 있습니다.
ch
입니다 실제로 두 개의 서로 다른 문자; 정렬 목적으로 하나만 취급됩니다. "digraph"가 적용 가능한 용어입니까?