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不起作用。再次感谢。