На елементи зіставлення зазвичай посилаються в контексті сортування.
У багатьох мовах зіставлення (сортування, як у словнику) проводиться не лише за символом. Так , наприклад, в Чехії, 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'як é).
é і é - один і той же символ, за винятком того, що один представлений одним символом, а другий - двома.
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
Працюватиме належним чином у деяких системах, але не в інших (наприклад, у GNU). І незрозуміло, чи $'[[.\ue9.]]'слід відповідати тільки $'\ue9'або обом $'\ue9'і $'e\u301'.
Не кажучи вже про не алфавітні сценарії чи сценарії з різними, регіональними порядками сортування, такі речі, як ffiin ( в одному символі), з якими стає складним обробляти такий простий API.
chце на самому справі два різних персонажа; це просто трактується як один з метою сортування. Ви впевнені, що "digraph" - це застосовний термін?