На элементы сортировки обычно ссылаются в контексте сортировки.
Во многих языках сопоставление (сортировка как в словаре) выполняется не только по символам. Например, на чешском языке, 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элемент сортировки, нам нужен новый синтаксис:
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[a-c[.ch.]]o'
cho
(те , между ними aи cи chодин).
Сейчас мир еще не совершенен и, вероятно, никогда не будет. Пример выше был в системе GNU и работал. Другим примером элемента сопоставления может быть eкомбинированный острый акцент в UTF-8 ( $'e\u0301'отображается как $'\u00e9'as é).
é и é - один и тот же символ, за исключением того, что один представлен одним символом, а другой - двумя.
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
Будет работать должным образом в некоторых системах, но не в других (например, не в GNU). И неясно, $'[[.\ue9.]]'должны ли совпадать только $'\ue9'или оба $'\ue9'и $'e\u301'.
Не говоря уже о неалфавитных сценариях или сценариях с различными региональными порядками сортировки, такими как ffi ( ffiодним символом), которые становятся сложными для обработки с таким простым API.
chэто на самом деле два разных персонажа; это просто рассматривается как один для целей сортировки. Вы уверены, что «диграф» является применимым термином?