d
対[0-9]
- 驚くべき比較最近の議論は、正規表現でのd
と[0-9]
の相対的な効率についての議論を引き起こしました。 最初のテストでは、d
がより高速であることが示唆されましたが、さらなる調査により、より微妙な現実が明らかになりました。d
は、特定のシナリオでは効率が低くなります。この記事では、この矛盾の背後にある理由を探ります
重要な違いは、各式の一致を設定する文字にあります。
すべてのユニコード数字が含まれます。
[0-9]
この拡張されたマッチング範囲d
は、パフォーマンスに影響を与える可能性があります。 正規表現エンジンは、より大きな文字セットを評価する必要があり、処理時間が増加する可能性があります。 多くの場合、違いは無視できるかもしれませんが、大きなデータセットまたは複雑なregexパターンを扱うと、影響はより顕著になります。
次のコードスニペットは、:
このコードは、すべてのUnicodeコードポイントを繰り返し、d
によって桁数として分類されたコードのみを追加し、
。
したがって、d
<code class="language-csharp">var sb = new StringBuilder(); for (UInt16 i = 0; i < 0x10FFFF; i++) { if (char.IsDigit((char)i)) { sb.Append((char)i); } } Console.WriteLine(sb.ToString());</code>はASCII桁のみを扱うときに潜在的に優れたパフォーマンスを提供します。 それらの選択は、アプリケーションの特定のニーズと処理されるデータの性質によって導かれるべきです。 入力にはASCII桁のみが含まれていると確信している場合、
はより効率的なオプションです。
以上が`\ d`は` [0-9] `よりも効率が低いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。