我在Ruby脚本中使用了以下代码:
if File.dirname(path) =~ /^www\.example\.com\/foo/
当文件只是/foo
下面的一个子目录时,这很有用,但不幸的是,如果文件位于/foo/bar
下面,则条件会失败。我的问题是,上面的正则表达式可以修改为什么,以便File.dirname
能够匹配下面的任何文件,至少在上面设置的条件而不仅仅是一个级别?
答案 0 :(得分:1)
这是我完全避开正则表达式的案例之一:
if path.split(File::SEPARATOR)[0,2] == ['www.example.com','foo']
更具可读性,无需转义。
答案 1 :(得分:0)
试试File.fnmatch,它会使用一些匹配的模式(类似但不是正则表达式),对于我们可以使用的情况:
**foo**
匹配包含名为foo
目录的路径的所有文件File.fnmatch('**foo**','foo/test.txt')
#> true
File.fnmatch('**foo**','/boo/foo/test.txt')
#> true
File.fnmatch('**foo**','/boo/test.txt')
#> false