如何使用Ruby在文本文件中搜索完全匹配的字符串?

我生成了一个文本文件,其中包含带有响应主体的HTTP请求响应头 我想在这个文件中搜索包含Access-Control-Allow-Origin: *作为标题的响应头。

该文件包含以->开头的行的forms,以"像这样结束:

 -> "Access-Control-Allow-Origin: *\r\n" 

如何使用if条件搜索此文本文件并在请求响应标头上方打印自定义消息?

我需要一些复杂的正则表达式吗?

使用我的代码我无法得到正确的搜索:

 require 'net/http' require 'uri' require 'IPAddr' require 'timeout' puts "Origin IP:\n\n" originip = gets() puts "Start IP:\n\n" startip = gets() puts "End IP:\n\n" endip = gets() (IPAddr.new("#{startip}")..IPAddr.new("#{endip}")).each do |address| begin uri = URI("http://#{address.to_s}") http = Net::HTTP.new(uri.host, uri.port) http.set_debug_output($stdout) request = Net::HTTP::Get.new(uri.request_uri) request.initialize_http_header({"Origin" => "#{originip}"}) response = http.request request $stdout.reopen('Access-Control-Allow-Origin.txt','a') f = File.Open('Access-Control-Allow-Origin.txt') line = f.read if line = /Access-Control-Allow-Origin: */ then puts "\n\nAccess-Control-Allow-Origin: * Header Found:\n\n" else puts "\n\nAccess-Control-Allow-Origin: * Header Not Found:\n\n" end rescue Timeout::Error => exc puts "ERROR: #{exc.message}" rescue Errno::ETIMEDOUT => exc puts "ERROR: #{exc.message}" rescue Exception => exc puts "ERROR: #{exc.message}" end end 

你的if语句使用了错误的运算符。

 if line =~ /Access-Control-Allow-Origin: */