ホームページ > バックエンド開発 > C++ > `\ d`は` [0-9] `よりも効率が低いですか?

`\ d`は` [0-9] `よりも効率が低いですか?

Mary-Kate Olsen
リリース: 2025-01-31 18:46:09
オリジナル
567 人が閲覧しました

Is `d` Less Efficient Than `[0-9]` in Regex?

正規表現効率:d[0-9] - 驚くべき比較

最近の議論は、正規表現でのd[0-9]の相対的な効率についての議論を引き起こしました。 最初のテストでは、dがより高速であることが示唆されましたが、さらなる調査により、より微妙な現実が明らかになりました。dは、特定のシナリオでは効率が低くなります。この記事では、この矛盾の背後にある理由を探ります 重要な違いは、各式の一致を設定する文字にあります。

は、0〜9のASCII桁のみを厳密に一致させます。ただし、より広いです。さまざまな非ラチンスクリプト(例えば、ペルシャ語、devanagari)のものを含むすべての

すべてのユニコード数字が含まれます。 [0-9]この拡張されたマッチング範囲dは、パフォーマンスに影響を与える可能性があります。 正規表現エンジンは、より大きな文字セットを評価する必要があり、処理時間が増加する可能性があります。 多くの場合、違いは無視できるかもしれませんが、大きなデータセットまたは複雑なregexパターンを扱うと、影響はより顕著になります。 次のコードスニペットは、

で一致する広範な文字セットを示しています。

このコードは、すべてのUnicodeコードポイントを繰り返し、dによって桁数として分類されたコードのみを追加し、

の動作を効果的に反映しています。 結果の出力は、ユニコード数字の包括的なリストであり、

。 したがって、d

はより広範な互換性を提供しますが、

1

2

3

4

5

6

7

8

9

var sb = new StringBuilder();

for (UInt16 i = 0; i < 0x10FFFF; i++)

{

    if (char.IsDigit((char)i))

    {

        sb.Append((char)i);

    }

}

Console.WriteLine(sb.ToString());

ログイン後にコピー
はASCII桁のみを扱うときに潜在的に優れたパフォーマンスを提供します。 それらの選択は、アプリケーションの特定のニーズと処理されるデータの性質によって導かれるべきです。 入力にはASCII桁のみが含まれていると確信している場合、

はより効率的なオプションです。

以上が`\ d`は` [0-9] `よりも効率が低いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート