搜索具有特定模式的文件
Searching for files with a specific pattern
我正在尝试使用模式在目录中查找特定文件
假设我有用户 ID - 101
这是我的文件
101
101_2
101_5
10111
103
10125
101_6
我正在尝试形成一个只给我文件的正则表达式模式 (101,101_2,101_5,101_6)
我正在尝试以下模式
^101_?\d+$
但它似乎根本没有选择任何文件。如果我出于某种原因删除 ^
.only 101_6
匹配。
编辑:
我正在使用 rails/ruby 在特定目录中查找文件。所以像
Dir.glob(location).grep("^101_?\d+$")
do something
end
你的问题不是特别清楚,但我猜你想要匹配 101
后跟可选的下划线和数字的任何内容。如果是这样,请使用正则表达式 ^101_?\d$
。如果您想要 101
后跟一个数字或下划线以及一个或多个数字,请使用 ^101(_\d+|\d)$
编辑
正如 OP 在评论中提到的,101
也应该匹配。更新后的正则表达式为 ^101(?:_?\d)?$
如果 location
不是当前文件夹,glob
返回的路径将包含 dirname 和 basename :
Dir.glob('./*').select{ |f| File.basename(f) =~ /\A101(_\d+)?\z/ }.each do |f|
puts f
# do something with f
end
我正在尝试使用模式在目录中查找特定文件
假设我有用户 ID - 101
这是我的文件
101
101_2
101_5
10111
103
10125
101_6
我正在尝试形成一个只给我文件的正则表达式模式 (101,101_2,101_5,101_6)
我正在尝试以下模式
^101_?\d+$
但它似乎根本没有选择任何文件。如果我出于某种原因删除 ^
.only 101_6
匹配。
编辑:
我正在使用 rails/ruby 在特定目录中查找文件。所以像
Dir.glob(location).grep("^101_?\d+$")
do something
end
你的问题不是特别清楚,但我猜你想要匹配 101
后跟可选的下划线和数字的任何内容。如果是这样,请使用正则表达式 ^101_?\d$
。如果您想要 101
后跟一个数字或下划线以及一个或多个数字,请使用 ^101(_\d+|\d)$
编辑
正如 OP 在评论中提到的,101
也应该匹配。更新后的正则表达式为 ^101(?:_?\d)?$
如果 location
不是当前文件夹,glob
返回的路径将包含 dirname 和 basename :
Dir.glob('./*').select{ |f| File.basename(f) =~ /\A101(_\d+)?\z/ }.each do |f|
puts f
# do something with f
end