Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Fileクラス > fnmatch
fnmatch(pattern, path, flags = 0) -> bool
[permalink][rdoc]fnmatch?(pattern, path, flags = 0) -> bool
ファイル名のパターンマッチ fnmatch(3) を行います。 path が pattern にマッチすれば真を返します。そうでない場合には false を返します。
%w(foo foobar bar).each {|f| p File.fnmatch("foo*", f) } # => true true false
引数 flags に指定できる定数は以下のとおりです。 これらの定数は File::Constants で定義されていますが、 File クラスの親クラスの IO が File::Constants をインクルードしているので、 これらの定数は File::FNM_NOESCAPE などとして参照可能です。
エスケープ文字 `\' を普通の文字とみなします。
デフォルトでは \ を伴う任意の文字はその文字にマッチしますが、 このフラグをつけると、\ が普通の文字として扱われます。
p File.fnmatch('\a', 'a') # => true p File.fnmatch('\a', '\a', File::FNM_NOESCAPE) # => true
前者で * は、エスケープされているので "*" そのものにマッチ します。
p File.fnmatch('\*', 'a') # => false p File.fnmatch('\*', '\a', File::FNM_NOESCAPE) # => true
単体の \ は、このフラグの有無に関わらず \ にマッチします。 (シングルクォート文字列中では \\ は、\ であることに注意)
p File.fnmatch('\\', '\\') # => true p File.fnmatch('\\', '\\', File::FNM_NOESCAPE) # => true
ワイルドカード `*', `?', `[]' が `/' にマッチしなくなります。 シェルのパターンマッチにはこのフラグが使用されています。
p File.fnmatch('*', '/', File::FNM_PATHNAME) # => false p File.fnmatch('?', '/', File::FNM_PATHNAME) # => false p File.fnmatch('[/]', '/', File::FNM_PATHNAME) # => false
アルファベットの大小文字を区別せずにパターンマッチを行います。
p File.fnmatch('A', 'a', File::FNM_CASEFOLD) # => true
ワイルドカード `*', `?', `[]' が先頭の `.' にマッチするようになります。
p File.fnmatch('*', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('?', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('[.]', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('foo/*', 'foo/.', File::FNM_DOTMATCH) # => true