10

さまざまな正規表現対応ツール/言語 (たとえば、perl、sed、java、vim など) の正規表現機能には多くの共通点がありますが、多くの違いもあります。

すべての正規表現対応ツール/言語がサポートする正規表現機能の標準サブセットはありますか? ツール/言語間で正規表現機能はどのように異なりますか?

4

6 に答える 6

12

http://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines
さらに詳細: http://www.regular-expressions.info/refflavors.html

于 2008-08-27T13:07:45.240 に答える
12

正規表現のフレーバーを比較する

http://www.regular-expressions.info/refflavors.html

于 2008-08-27T13:08:30.010 に答える
1

egrep 文法や sed regexp 文法ではなく、grep regexp 文法を使用した場合は、多くのプラットフォームやツールで安全なサブセットを使用する必要があります。

あなたを苦しめるかもしれない唯一のことは、有限状態オートマトン (FSA) を使用する正規表現の実装とバックトラッキングを使用する実装の間で移行する場合です。たとえば、量指定子の実装は grep から Perl まで異なります。

FSA ベースの実装では、最初の可能な位置から始まる最長の一致が検索されます。バックトラックのものは、最初の可能な位置から始めて、左に偏った最初の一致を見つけます。つまり、一致するものが見つかるまで、パターンの順序で各分岐を試行します。

文字列"xyxyxyzz"とパターンを考えてみましょう"(xy)*(xyz)?"。FSA ベースのエンジンは、可能な限り長い部分文字列"xyxyxyz". バックトラッキング ベースのエンジンは、左に偏った最初の部分文字列"xyxyxy".

于 2008-08-27T13:14:23.897 に答える
1

ほとんどの正規表現ツール/言語は、次の基本機能をサポートしています。

  1. 文字クラス/セットとその否定 - []
  2. アンカー - ^$
  3. オルタネーション - |
  4. 数量詞 - ?+*{n,m}
  5. メタ文字 - \w、\s、\d、...
  6. 後方参照 - \1、\2、...
  7. ドット - .
  8. /g や /i などの単純な修飾子は、グローバルで大文字と小文字を区別しません
  9. 文字のエスケープ

より高度なツール/言語のサポート:

  1. 先読みと後読み
  2. POSIX 文字クラス
  3. 単語境界
  4. 正規表現の小さなセクションのみで大文字と小文字を区別しないようにするようなインライン スイッチ
  5. /x などの修飾子は、追加の書式設定とコメントを許可し、/m は複数行を許可します。
  6. 名前付きキャプチャ
  7. ユニコード
于 2008-08-27T13:15:30.370 に答える
0

標準のエンジンはありません。ただし、POSIX 拡張正規表現形式は、ほとんどのエンジンの有効なサブセットであり、おそらく標準化されたサブセットに近いものです。

于 2008-08-27T13:17:22.953 に答える