检查字符串是否与模式后的另一个单词匹配

时间:2014-05-07 10:13:38

标签: ruby regex string match

我得到的变量string等于shid!

我想要一个正则表达式,如果输入的字符串与前一个变量string中的每个字符匹配良好,则呈现true。

由于我总是无法正确解释我想要做什么,这里有一个可能的输入和输出的例子:

  • shid!返回 true
  • shid返回 false
  • shhhhiddd!返回 true
  • ssssshhhhiiiiiddd!!!!返回 true
  • hsid!返回 false

对于仪式问题“我尝试了什么”,我不习惯正则表达式。所以我的答案是:"shid!" =~ /s.*!/,显然这不是一个好的答案,我知道为什么,但不知道如何解决它。谢谢你的帮助

3 个答案:

答案 0 :(得分:4)

尝试:

string = 'shid!'
reg = Regexp.new string.split('').join('+')


!!('shid!' =~ reg)    #=> true
!!('shid' =~ reg)     #=> false
!!('shhhhiddd!' =~ reg) #=> true
!!('ssssshhhhiiiiiddd!!!!' =~ reg)  #=> true
!!('hsid!' =~ reg) #=> false

答案 1 :(得分:3)

您可以使用#squeeze

str.squeeze == 'shid!' #=> true

答案 2 :(得分:0)

我不确定我有问题。但也许这就是你要找的东西:

str = 'ssssshhhhiiiiiddd!!!!'
str.split('').uniq.join == 'shid!' #=> true