开始我使用一些代码,如我的Ruby脚本如下:正则表达式,如果目录与名称
if File.dirname(path) =~ /^www\.example\.com\/foo/
当一个文件只是一个子目录深下/foo
这个伟大的工程,但不幸的是,条件将失败,如果该文件在下面说/foo/bar
。我的问题是,上面的正则表达式可以修改为什么,以便File.dirname
可以匹配任何至少在上面设置的条件下的文件,而不仅仅是一个深度的文件?
开始我使用一些代码,如我的Ruby脚本如下:正则表达式,如果目录与名称
if File.dirname(path) =~ /^www\.example\.com\/foo/
当一个文件只是一个子目录深下/foo
这个伟大的工程,但不幸的是,条件将失败,如果该文件在下面说/foo/bar
。我的问题是,上面的正则表达式可以修改为什么,以便File.dirname
可以匹配任何至少在上面设置的条件下的文件,而不仅仅是一个深度的文件?
这是那些情况下,我会避开一个正则表达式完全之一:
if path.split(File::SEPARATOR)[0,2] == ['www.example.com','foo']
更可读的,没有逃脱需要的。
尝试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
您目录可以试试这个来代替/ foo [\/a-zA-Z] + – 2014-11-24 16:26:22
基本上你想确定'path'是否在'/ foo'之下?不知道你在这里需要一个正则表达式。你可以比较每个字符串的开始,对吗? – tadman 2014-11-24 16:32:48
问题是直接在'/ foo'下面的文件会在这里匹配,比如'/ foo/somedoc.txt',但是'/ foo/bar/somedoc.txt'不匹配。只要它位于'/ foo /'下面,我希望它评估为true。 – randombits 2014-11-24 16:37:03