3

ORAND演算子、または連続した文字クラスを使用する間の効率の観点から言えば。

以下の文字列データ。

1A
A1
$1
$$

次の式:

^[\w\W][\w\W]$

^(?:\w|\W)(?:\w|\W)$

^[\w&&\W](?:[\w&&\W])$

一貫性はここでどのように影響するのでしょうか? また、個々の表現を使用する際の好み以外に、ここでの実際の違いは何ですか?

4

1 に答える 1

3

http://regex101.com/正規表現デバッガを使用すると、パターンの一致方法の違いを確認できます。主な違いは速度です。

  • ^[\w\W][\w\W]$文字列の 1 つに一致させるには 6 つの手順が必要です
  • ^(?:\w|\W)(?:\w|\W)$文字列の 1 つに一致させるには 10 ステップが必要です
  • ^[\w&&\W](?:[\w&&\W])$文字列の 1 つに一致させるには 8 つの手順が必要です

もちろん、これは正規表現のフレーバー、エンジンの実装、可能な最適化に大きく依存します。

編集

  • ^..$6つのステップも必要です

ステップ数は必ずしも速度と直接相関するわけではありませんが、ほとんどの場合 (正規表現が十分に自明である場合)、読みやすく保守性の高い正規表現は、xy マイクロ秒の速度の節約よりも多くの利点を提供します (これもユース ケースと入力データ)。

于 2013-10-10T16:13:03.137 に答える