nviの文字クラスエラー:[[:digit:]]は[[:alnum:]]として解釈されます。

nviの文字クラスエラー:[[:digit:]]は[[:alnum:]]として解釈されます。

簡単検索インウェイテキストに関しては、例えば次のようになります。

the quick red fox jumped 1 foot over the lazy 28 pound dog

次の検索を利用してください

/[[:digit:]]

のように振る舞う

/[[:alnum:]]

つまり、繰り返すとすべての文字が検索されます。その問題について私が試したすべての角かっこ式はalnumとして機能します。しかし、

/[0-9]

期待どおりに機能し、1、2、8のみが見つかります。しばらくnviを使用してきましたが、知識には大きなギャップがあります。助けてくれてありがとう。

答え1

これは間違いです。 5文字の長さのクラス名(つまり、.を除くすべてのクラス名)は、小文字が欠落しているxdigitと解釈されます。alnumパッチは簡単です:

--- regex/regcomp.c~
+++ regex/regcomp.c
@@ -819,7 +819,7 @@
                NEXT();
        len = p->next - sp;
        for (cp = cclasses; cp->name != NULL; cp++)
-               if (STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
+               if (STRLEN(cp->name) == len && !MEMCMP(cp->name, sp, len))
                        break;
        if (cp->name == NULL) {
                /* oops, didn't find it */

私はバグを報告しておらず、どこにも報告されたものが見つかりませんでした。そうしてここに戻ってください。

関連情報