Looking for bash Answers? Try Ask4KnowledgeBase
Looking for bash Keywords? Try Ask4Keywords

Bashパターンマッチングと正規表現


構文

  • $ shopt -u option#Bashの組み込みオプションを無効にする
  • $ shopt -s option#Bashの組み込みオプションを有効にする

備考

文字クラス

[] globの有効な文字クラスは、POSIX標準で定義されています。

アルナムアルファベット空白cntrl数字グラフ下の印刷区画スペース上の単語xdigit

[]内に複数の文字クラスまたは範囲を使用することができます(例:

$ echo a[a-z[:blank:]0-9]*

aで始まり、小文字または空白または数字のあとに続くファイルに一致します。

こと、しかし、心に留めておくべきである[]グロブのみを完全に否定し、それのない部分だけすることができます。否定文字 、開始に続く最初の文字でなければなりません [例えば、この式は、 a始まらないすべてのファイルと一致します

$ echo [^a]*

以下は、数字または^で始まるすべてのファイルに一致します。

$ echo [[:alpha:]^a]*

^がリテラル^として解釈されるため、 a以外の文字で始まるファイルやフォルダと一致しませ

グロブ文字をエスケープする

ファイルまたはフォルダには、名前の一部としてグロブ文字が含まれている可能性があります。この場合、globはリテラルマッチのために先行する\でエスケープすることができます。別のアプローチは、ファイルのアドレス指定にダブル""またはシングル''引用符を使用することです。 Bashは""または''囲まれたグロブを処理しません。

正規表現との違い

グロブと正規表現の最も大きな違いは、有効な正規表現には修飾子と量指定子が必要であることです。修飾子は一致するものを識別し、量子は修飾子に一致する頻度を示します。同等の正規表現*グロブがある.*場所.任意の文字を表し、 *は前の文字の0以上の一致を表します。 ?の同等の正規表現? globは.{1}です。これまでのように、修飾子.任意の文字に一致し、 {1}は直前の修飾子と一度だけ一致することを示します。これは、と混同してはいけません? RegExで1回または1回一致します。 [] globは、RegExで同じように使用することができます。ただし、必須の数量子が続く場合に限ります。

等価正規表現

グローブ正規表現
* .*
? .
[] []

パターンマッチングと正規表現 関連する例