Elementy sortowania są zwykle przywoływane w kontekście sortowania.
W wielu językach sortowanie (sortowanie jak w słowniku) odbywa się nie tylko według znaków. Na przykład w języku czeskim chnie sortuje się między nimi cgi citak jak w języku angielskim, ale uważa się za całość do sortowania. Jest to element zestawiający (nie możemy tutaj odnosić się do znaku, znak jest podzbiorem elementów zestawiających), który sortuje pomiędzy hi i.
Teraz możesz zapytać: co to ma wspólnego z wyrażeniami regularnymi? , Dlaczego miałbym chcieć odwoływać się do elementu zestawiającego w wyrażeniu nawiasowym? .
Cóż, w wyrażeniach w nawiasach używa się kolejności. Na przykład w [c-j]chcesz, aby znaki były pomiędzy ci j. A ty? Wolisz tam zestawiać elementy. [h-i]w meczach regionalnych w Czechach ch:
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[h-i]o'
cho
Jeśli więc możesz wymienić zakres elementów zestawiających w wyrażeniu w nawiasie, możesz spodziewać się, że będziesz w stanie również je wymienić osobno. [a-cch]pasowałby do tych elementów zestawiających między ai ca coraz i h. Aby mieć a-ci chelement zestawiający, potrzebujemy nowej składni:
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[a-c[.ch.]]o'
cho
(te pośrednie ai coraz chjeden).
Teraz świat nie jest jeszcze idealny i prawdopodobnie nigdy nie będzie. Powyższy przykład dotyczył systemu GNU i działał. Innym przykładem elementu zestawiającego może być ełączenie ostrego akcentu w UTF-8 ( $'e\u0301'renderowane jak $'\u00e9'jako é).
é i é są tym samym znakiem, z tym że jeden jest reprezentowany przez jeden znak, a drugi przez dwa.
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
Będzie działał poprawnie na niektórych systemach, ale nie na innych (na przykład nie na GNU). I nie jest jasne, czy $'[[.\ue9.]]'powinno pasować tylko $'\ue9'czy jedno $'\ue9'i drugie i $'e\u301'.
Nie wspominając o skryptach niealfabetycznych lub skryptach o różnych regionalnych porządkach sortowania, takich jak ffi ( ffiw jednym znaku), które stają się trudne do obsługi przy tak prostym interfejsie API.
chsą to dwie różne postacie; jest on traktowany jako jeden do celów sortowania. Czy na pewno termin „digraf” jest terminem stosowanym?