2017-01-16 37 views
-3

我正在尋找一個正則表達式公式來基於一個字符返回一個字符串的塊,如果這個字符串包含L1,那麼它將只有一個塊,如果找到L2,它會返回2個塊,L3 = 3塊。正則表達式動態字符串操作

讓我們假設我們有這個字符串

"L2N1N1" 

,我們想拿到2串

"L2N1" and "L2N1N1" 

又如

"L3N1N1N2" 

返回3〜應變GS

"L3N1" "L3N1N1" "L3N1N1N2" 

im使用紅寶石

+1

既不'[ 「L3N1」] [ 「L3N1N1」]'也不'[ 「L3N1」] [ 「L3N1N1」] [ 「L3N1N1N2」]'是紅寶石您期望收到的對象。請正確說明預期的結果。 – mudasobwa

+0

@mudasobwa我期待字符串和返回字符串。 – saadlulu

回答

3
"L3N1N1N2".sub(/L(\d)(?:N\d)+/) do |m| 
    $1.to_i.times.map { |i| m[0..3+2*i] }.join(' ') 
end 
#⇒ "L3N1 L3N1N1 L3N1N1N2" 
+0

完美的按預期工作,你可以請刪除最後的支架。 – saadlulu

+0

啊,確實,很抱歉,修正了。 – mudasobwa

+1

尊重。理解這個問題至少和找到答案一樣困難。 –