正则表达式,以查看目录是否以name开头

时间:2014-11-24 16:22:01

标签: ruby regex

我在Ruby脚本中使用了以下代码:

if File.dirname(path) =~ /^www\.example\.com\/foo/

当文件只是/foo下面的一个子目录时,这很有用,但不幸的是,如果文件位于/foo/bar下面,则条件会失败。我的问题是,上面的正则表达式可以修改为什么,以便File.dirname能够匹配下面的任何文件,至少在上面设置的条件而不仅仅是一个级别?

2 个答案:

答案 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