照合要素は通常、並べ替えのコンテキストで参照されます。
多くの言語では、照合(辞書のようにソート)は、文字ごとに行われるだけではありません。たとえば、チェコ語では、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'などé)。
éとéは同じ文字ですが、一方が1つの文字で表され、もう一方が2つの文字で表されます。
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
一部のシステムでは正しく機能しますが、他のシステムでは機能しません(たとえば、GNUのシステムでは機能しません)。また、とのどちらか$'[[.\ue9.]]'のみを一致させる$'\ue9'か、または両方$'\ue9'を一致させる必要があるかは不明$'e\u301'です。
アルファベット以外のスクリプト、または、(ffi1文字)のような、地域ごとの並べ替え順序が異なるスクリプトは言うまでもなく、このような単純なAPIで処理するのは難しくなります。
chです、実際に二つの異なる文字。並べ替えの目的で1つとして扱われます。「ダイグラフ」が適切な用語であることを確信していますか?