bashはどの正規表現エンジンタイプを使用しますか?

RegEx Buddy を使用して、正規表現のプロトタイプを作成してデバッグします。 RegEx Buddyを使用すると、さまざまな正規表現エンジンタイプ(.NET、Java、Perl、GNU BRE、GNU ERE、POSIX、BRE、POSIX EREなど)から選択できます。

正規表現エンジンの機能bashの使用(たとえば、ifおよびcaseステートメントで)? Centos 5.532ビットとbash3.2.25(1)を実行しています:

[kevin@mon01 scratch]$ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. 

それはGNUBREまたはGNUEREになると思いますか?

回答

bash(および一般的なPOSIXシェル)は、caseステートメントではなく、グロブパターン

演算子;詳細については、 http://mywiki.wooledge.org/BashGuide/Patterns
bash拡張正規表現(ERE)を使用します。

コメント

  • ありがとうございます。 2番目のリンクは私が推測しているEREがGNUEREであると述べています。

回答

Bashはifおよびcaseステートメントの上記の種類の正規表現。

むしろ、シェルグロブパターンを使用します。 、これはどの種類の正規表現よりも強力ではありません。比較的新しいバージョンのbashでは、(行)アンカーのない正規表現と表現的に等しいが、否定された用語を含むが、構文が異なる拡張グロブパターンを使用することもできます。上記の正規表現タイプ。

ただし、拡張シェルグロブは、シェルスクリプトまたはインタラクティブの両方でshopt -s extglobを使用する前に有効にする必要があることに注意してください。

単一の例外的な場所、つまり[[ ]]条件付きコマンド内では、=~バイナリリレーションにより左側の文字列をチェックできます拡張正規表現に対する側右側の式ERE。

回答

リンクされたBashガイドによると、Bash(バージョン3.0以降)は次を使用します。 「拡張正規表現(ERE)方言。」

その方言の詳細については、こちらをご覧ください。 ここ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です