2014-05-07 64 views
-1

匹配一個字我有一個變量string這等於shid!檢查字符串後面的模式

我想正則表達式呈現真,如果在輸入的字符串中的良好秩序上一個變量string的每一個字符相匹配。

正如我一直無法正常我想要做的解釋,這裏是可能的輸入和輸出的例子:

  • shid!回報真正
  • shid回報
  • shhhhiddd!返回true
  • ssssshhhhiiiiiddd!!!!返回
  • hsid!回報

對於禮儀問題:「我是怎麼試試」,我不習慣正則表達式。所以我的答案是這樣的:"shid!" =~ /s.*!/,顯然這不是好的答案,我知道爲什麼,但不知道如何解決它。感謝您的幫助

+1

你想'的______^h _____________________我_________ d ___ ______!''相匹配,以及? – BroiSatse

+0

字符串(比如'「shid!」'')不是多次包含同一個字符嗎? – sawa

+0

@BroiSatse,沒有抱歉。 – sidney

回答

4

嘗試:

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


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

正則表達式的好回答,謝謝反正,我會選擇擠我的需求 – sidney

+2

這是唯一正確的答案 – sawa

0

我不知道我有問題。但也許這是你在找什麼:

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

是的,很好的答案,這可能是我正在尋找:) – sidney

+0

爲什麼有人downvoted這個答案?即使我認爲'squeeze'更美麗,這也是非常好的技巧 – sidney

+0

@sidney上面的評論沒有意義,因爲您對我對原始問題的評論給予了回覆評論。你爲什麼期望這會被提高或者不被降低? – sawa

3

你可以使用#squeeze

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

我讓你失去了一秒 – sawa

+0

@sawa爲什麼這樣?: - ) –

+0

非常好的答案!謝謝我不知道這個方法 – sidney