大文字と小文字を区別する検索と比較して、大文字と小文字を区別する検索のコストはどのくらいですか?

大文字と小文字を区別する検索と比較して、大文字と小文字を区別する検索のコストはどのくらいですか?

私はgrep -iランタイムがあまり変わらないので、通常のgrep(grepの文字数と比較して)よりも指数関数的に(時間的に)高価だとは思わない。

しかし、理論上ではこうなるべきです。例えば

egrep -i abc *

等しい

egrep "abc|abC|aBc|aBC|Abc|AbC|ABc|ABC" *

grepなどのユーティリティは、大文字と小文字を区別しないクエリで指数関数的な時間をどのように回避できますか?そのようなユーティリティが使用できるUnixでデフォルトでサポートされている大文字と小文字の区別比較演算子はありますか?

ベストアンサー1

abCiとiのマッチングは小文字に変換すればaBc(1回)簡単にでき、同じ入力もそれぞれ小文字に変換すればよい。その後、正常に一致します。abCaBc

しかし、たぶんいくつかを無視するだけで可能かもしれません。 「A」は65、「a」は97です。その差は32で2の重ね二乗なので簡単に隠すことができます。 'ä'(228) と 'ä'(196) も 32 の違いがありますが、拡張 ASCII のすべての文字に適用されるかどうかは不明です。

おすすめ記事