2012-02-21 23 views
3

我有紅寶石小的正則表達式片斷下面被取代「:[\ W]」與「:〜」紅寶石GSUB正則表達式來添加第一個匹配的字符返回到替換字符串

>> "name: Name, phone_number: Phone Number, inactive: Inactive ".gsub(/[:]\s[\w]/, ': ~') 

=> "name: ~ame, phone_number: ~hone Number, inactive: ~nactive " 

如何能我修改GSUB表達添加的第一個字符回替換字符串,即:

=> 「的名稱:〜名稱,PHONE_NUMBER:〜電話號碼,不活動:〜無效」

比ks

回答

3

首先,圍繞單個字符/特殊字符組,您不需要[],因爲它只會讓您想將多個字符組合在一起。你的正則表達式相當於/:\s\w/

解決你的問題,你可以使用一個捕獲組並重新捕獲的信:

s.gsub(/:\s(\w)/, ': ~\1') 
# => "name: ~Name, phone_number: ~Phone Number, inactive: ~Inactive " 

或者使用一個超前不替換擺在首位字母:

s.gsub(/:\s(?=\w)/, ': ~') 
# => "name: ~Name, phone_number: ~Phone Number, inactive: ~Inactive " 

也許你更願意使用/:\s+(?=\w)/,這將允許在下一個字符之前有多個空格。

+0

太好了,謝謝Niklas – patrickandroid 2012-02-21 22:12:55

相關問題