2010-12-31 1 views
2

一般に、2つの正規表現を比較し、どちらがより厳密であるかを簡単に判別できますか?つまり、AとBの2つの正規表現では、Aと一致するすべての文字列もBと一致する場合、AはBよりも厳密です。strict-nessの2つの正規表現を比較しますか?

+0

'quick'では、正規表現の厳密さを効率的に計算する機能を求めているのですか、それらを見て厳密性を評価する方法を求めていますか? –

+0

本質的には、与えられた文字列にマッチする2つの正規表現を比較し、それらの正規表現のどちらがより厳しいものなのかを知りたいので、後者を推測します。 – Tim

+0

Mechanical Turk :) – ysth

答えて

5

これらの種類のことを理論的に行うアルゴリズムはありますが、

  1. Rubyの正規表現の目的は、テキストにマッチさせることであり、有限状態オートマトンの理論的操作を実行しないためです。
  2. Rubyは、独自のアルゴリズムを実行するための正規表現の内部を公開していません。 (inspectを使用して正規表現の元の形式を取得することはできますが、正規表現の解析を行うには、それを自分で解析する必要があります)。
  3. Rubyの正規表現は「本当の」正規表現ではありません。後方参照のおかげで、グループをキャプチャする際に使用されるので、通常の言語のスーパーセットを認識することができます(コンテキストフリー言語のサブセットにすぎません)。そのため、Rubyの正規表現の能力と完全には一致しません。
関連する問題