请原谅我的无知,我是Ruby的新手.
我知道如何搜索字符串,甚至是一个带正则表达式的单个文件:
str = File.read('example.txt')
match = str.scan(/[0-9A-Za-z]{8,8}/)
puts match[1]
Run Code Online (Sandbox Code Playgroud)
我知道如何在多个文件和目录中搜索静态短语
pattern = "hello"
Dir.glob('/home/bob/**/*').each do |file|
next unless File.file?(file)
File.open(file) do |f|
f.each_line do |line|
puts "#{pattern}" if line.include?(pattern)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何对多个文件和目录使用我的正则表达式.任何和所有的帮助非常感谢.
嗯,你很亲密.首先使模式成为Regexp对象:
pattern = /hello/
Run Code Online (Sandbox Code Playgroud)
或者,如果您尝试从String创建Regexp(如在命令行中传入),您可以尝试:
pattern = Regexp.new("hello")
# or use first argument for regexp
pattern = Regexp.new(ARGV[0])
Run Code Online (Sandbox Code Playgroud)
现在,当你在搜索时,line
是一个字符串.您可以使用match
或scan
获取与您的模式匹配的结果.
f.each_line do |line|
if line.match(pattern)
puts $0
end
# or
if !(match_data = line.match(pattern)).nil?
puts match_data[0]
end
# or to see multiple matches
unless (matches = line.scan(pattern)).empty?
p matches
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6179 次 |
最近记录: |