File.fnmatch?( pattern, path, [flags] ) â (true or false)
Returns true if path matches against pattern The pattern is not a regular expression; instead it follows rules similar to shell filename globbing. It may contain the following metacharacters:
-
*
-
Matches any file. Can be restricted by other values in the glob.
*
will match all files;c*
will match all files beginning withc
;*c
will match all files ending withc
; and*c*
will match all files that havec
in them (including at the beginning or end). Equivalent to/ .* /x
in regexp. -
**
-
Matches directories recursively or files expansively.
-
?
-
Matches any one character. Equivalent to
/.{1}/
in regexp. -
[set]
-
Matches any one character in
set
. Behaves exactly like character sets in Regexp, including set negation ([^a-z]
). -
\
-
Escapes the next metacharacter.
flags is a bitwise OR of the FNM_xxx
parameters. The
same glob pattern and flags are used by Dir::glob
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | File .fnmatch( 'cat' , 'cat' ) #=> true # match entire string File .fnmatch( 'cat' , 'category' ) #=> false # only match partial string File .fnmatch( 'c{at,ub}s' , 'cats' ) #=> false # { } isn't supported File .fnmatch( 'c?t' , 'cat' ) #=> true # '?' match only 1 character File .fnmatch( 'c??t' , 'cat' ) #=> false # ditto File .fnmatch( 'c*' , 'cats' ) #=> true # '*' match 0 or more characters File .fnmatch( 'c*t' , 'c/a/b/t' ) #=> true # ditto File .fnmatch( 'ca[a-z]' , 'cat' ) #=> true # inclusive bracket expression File .fnmatch( 'ca[^t]' , 'cat' ) #=> false # exclusive bracket expression ('^' or '!') File .fnmatch( 'cat' , 'CAT' ) #=> false # case sensitive File .fnmatch( 'cat' , 'CAT' , File :: FNM_CASEFOLD ) #=> true # case insensitive File .fnmatch( '?' , '/' , File :: FNM_PATHNAME ) #=> false # wildcard doesn't match '/' on FNM_PATHNAME File .fnmatch( '*' , '/' , File :: FNM_PATHNAME ) #=> false # ditto File .fnmatch( '[/]' , '/' , File :: FNM_PATHNAME ) #=> false # ditto File .fnmatch( '\?' , '?' ) #=> true # escaped wildcard becomes ordinary File .fnmatch( '\a' , 'a' ) #=> true # escaped ordinary remains ordinary File .fnmatch( '\a' , '\a' , File :: FNM_NOESCAPE ) #=> true # FNM_NOESCAPE makes '\' ordinary File .fnmatch( '[\?]' , '?' ) #=> true # can escape inside bracket expression File .fnmatch( '*' , '.profile' ) #=> false # wildcard doesn't match leading File .fnmatch( '*' , '.profile' , File :: FNM_DOTMATCH ) #=> true # period by default. File .fnmatch( '.*' , '.profile' ) #=> true rbfiles = '**' '/' '*.rb' # you don't have to do like this. just write in single string. File .fnmatch(rbfiles, 'main.rb' ) #=> false File .fnmatch(rbfiles, './main.rb' ) #=> false File .fnmatch(rbfiles, 'lib/song.rb' ) #=> true File .fnmatch( '**.rb' , 'main.rb' ) #=> true File .fnmatch( '**.rb' , './main.rb' ) #=> false File .fnmatch( '**.rb' , 'lib/song.rb' ) #=> true File .fnmatch( '*' , 'dave/.profile' ) #=> true pattern = '*' '/' '*' File .fnmatch(pattern, 'dave/.profile' , File :: FNM_PATHNAME ) #=> false File .fnmatch(pattern, 'dave/.profile' , File :: FNM_PATHNAME | File :: FNM_DOTMATCH ) #=> true pattern = '**' '/' 'foo' File .fnmatch(pattern, 'a/b/c/foo' , File :: FNM_PATHNAME ) #=> true File .fnmatch(pattern, '/a/b/c/foo' , File :: FNM_PATHNAME ) #=> true File .fnmatch(pattern, 'c:/a/b/c/foo' , File :: FNM_PATHNAME ) #=> true File .fnmatch(pattern, 'a/.b/c/foo' , File :: FNM_PATHNAME ) #=> false File .fnmatch(pattern, 'a/.b/c/foo' , File :: FNM_PATHNAME | File :: FNM_DOTMATCH ) #=> true |
Please login to continue.