在Ruby中评估字符串中的正则表达式

时间:2014-08-26 11:48:44

标签: ruby regex string

我有一个简单的要求。我从用户那里读取了一个字符串( track或trAck )。我想要一个使用Regexp概念的逻辑,它会针对user input(在字符串中)检查regular expression

 def test_regex
      string = "tr[Aa]ck"
      string1 = /#{Regexp.quote(string)}/ #tried something here
      user_input = "track" #or "trAck"
      if string1 == user_input
        puts "REGEX works"
      else
        puts "DIDN work"
      end
    end
 end

我知道我已经盲目地写了一些代码。需要正确的方向!

1 个答案:

答案 0 :(得分:3)

删除Regexp.quote,或使用Regexp::new。 (如果您使用Regexp.quote,则生成的模式将与字面上的tr[Aa]ck匹配

string1 = /#{string}/
# OR
# string1 = Regexp.new(string)

使用=~运算符代替==将正则表达式与字符串匹配。

if string1 =~ user_input

def test_regex
  string = "tr[Aa]ck"
  string1 = /#{string}/
  user_input = "track" #or "trAck"
  if string1 =~ user_input
    puts "REGEX works"
  else
    puts "DIDN work"
  end
end