照合要素は通常、並べ替えのコンテキストで参照されます。
多くの言語では、照合(辞書のようにソート)は、文字ごとに行われるだけではありません。たとえば、チェコ語では、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'
です。
アルファベット以外のスクリプト、または、(ffi
1文字)のような、地域ごとの並べ替え順序が異なるスクリプトは言うまでもなく、このような単純なAPIで処理するのは難しくなります。
ch
です、実際に二つの異なる文字。並べ替えの目的で1つとして扱われます。「ダイグラフ」が適切な用語であることを確信していますか?