我试图使用模式
在目录中查找特定文件让我说我有用户的身份证 - 101
这是我的文件
101
101_2
101_5
10111
103
10125
101_6
我试图形成一个只给我文件的正则表达式模式(101,101_2,101_5,101_6)
我正在尝试以下模式
^101_?\d+$
但它似乎根本没有选择任何文件。如果我因某种原因删除^
。仅101_6
次匹配。
编辑:
我使用rails / ruby来查找特定目录中的文件。像
这样的东西Dir.glob(location).grep("^101_?\d+$")
do something
end
答案 0 :(得分:1)
如果location
不是当前文件夹,则glob
返回的路径将包含dirname和basename:
Dir.glob('./*').select{ |f| File.basename(f) =~ /\A101(_\d+)?\z/ }.each do |f|
puts f
# do something with f
end
答案 1 :(得分:0)
你的问题不是特别清楚,但我猜你要匹配101
后跟可选的下划线和数字的任何内容。如果是这样,请使用正则表达式^101_?\d$
。如果您希望101
后跟数字或下划线以及一个或多个数字,请使用^101(_\d+|\d)$
修改强>
正如OP在评论中提到的那样,101
也应该匹配。更新的正则表达式为^101(?:_?\d)?$