Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Regex替换目录以仅获取数组中的文件名_Ruby_Regex_Gsub - Fatal编程技术网

Ruby Regex替换目录以仅获取数组中的文件名

Ruby Regex替换目录以仅获取数组中的文件名,ruby,regex,gsub,Ruby,Regex,Gsub,我有一个包含多条路径的数组。我只想在数组中存储文件名 arr = ["/This/is/MyFirst/Path/file1","/This/is/MySecond/Path/file2","/This/is/MyThird/Path/file3"] 我试图用gsub删除除文件名以外的所有文件,但我不确定为什么我使用的正则表达式不起作用,因为 当我运行下面的代码时,没有删除任何内容 arr.each {|f| puts f.gsub( /\/\(.+\)*/, '')} 这是我的测试: ir

我有一个包含多条路径的数组。我只想在数组中存储文件名

arr = ["/This/is/MyFirst/Path/file1","/This/is/MySecond/Path/file2","/This/is/MyThird/Path/file3"]
我试图用gsub删除除文件名以外的所有文件,但我不确定为什么我使用的正则表达式不起作用,因为 当我运行下面的代码时,没有删除任何内容

arr.each {|f| puts f.gsub( /\/\(.+\)*/, '')}
这是我的测试:

irb(main):172:0* arr = ["/This/is/MyFirst/Path/file1","/This/is/MySecond/Path/file2","/This/is/MyThird/Path/file3"]
=> ["/This/is/MyFirst/Path/file1", "/This/is/MySecond/Path/file2", "/This/is/MyThird/Path/file3"]
irb(main):173:0> arr.each {|f| puts f.gsub( /\/\(.+\)*/, '')}
/This/is/MyFirst/Path/file1
/This/is/MySecond/Path/file2
/This/is/MyThird/Path/file3
=> ["/This/is/MyFirst/Path/file1", "/This/is/MySecond/Path/file2", "/This/is/MyThird/Path/file3"]
irb(main):174:0>
提前感谢您的帮助。

为什么不呢

arr.map { |file_path| File.basename(file_path) }

你不应该跳过括号。否则,它们将被视为字符。试试下面的方法

arr.each {|f| puts f.gsub( /\/(.+)*/, '')}

与其使用正则表达式,为什么不直接使用?@MxyL我同意你的看法..你好,miindlek,谢谢你,照你说的做,我得到的都是空值。但是我已经在一个正则表达式测试仪中测试过了,正则表达式可以工作。我不知道为什么不在这里工作。你使用了哪个正则表达式测试仪?我已经尝试了在线regexpal.com来测试重新检查过的正则表达式,这次有效。它的工作原理是这样的:“arr.each{124; f|put f.gsub(/\/(.+)\/+/,'')}”。非常感谢。你好,奥雅纳,basename的选项很好用!非常感谢。即使我有一个解决方案,我仍然在想为什么使用regex的gsub不起作用。再次感谢。