OR
、AND
演算子、または連続した文字クラスを使用する間の効率の観点から言えば。
以下の文字列データ。
1A
A1
$1
$$
次の式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
一貫性はここでどのように影響するのでしょうか? また、個々の表現を使用する際の好み以外に、ここでの実際の違いは何ですか?
OR
、AND
演算子、または連続した文字クラスを使用する間の効率の観点から言えば。
以下の文字列データ。
1A
A1
$1
$$
次の式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
一貫性はここでどのように影響するのでしょうか? また、個々の表現を使用する際の好み以外に、ここでの実際の違いは何ですか?
http://regex101.com/正規表現デバッガを使用すると、パターンの一致方法の違いを確認できます。主な違いは速度です。
^[\w\W][\w\W]$
文字列の 1 つに一致させるには 6 つの手順が必要です^(?:\w|\W)(?:\w|\W)$
文字列の 1 つに一致させるには 10 ステップが必要です^[\w&&\W](?:[\w&&\W])$
文字列の 1 つに一致させるには 8 つの手順が必要ですもちろん、これは正規表現のフレーバー、エンジンの実装、可能な最適化に大きく依存します。
編集:
^..$
6つのステップも必要ですステップ数は必ずしも速度と直接相関するわけではありませんが、ほとんどの場合 (正規表現が十分に自明である場合)、読みやすく保守性の高い正規表現は、xy マイクロ秒の速度の節約よりも多くの利点を提供します (これもユース ケースと入力データ)。