我在ruby下面有一个小的正则表达式片段,用“:〜”代替“:[\ w]”
>> "name: Name, phone_number: Phone Number, inactive: Inactive ".gsub(/[:]\s[\w]/, ': ~')
=> "name: ~ame, phone_number: ~hone Number, inactive: ~nactive "
如何修改gsub表达式以将第一个字符添加回替换后的字符串,即:
=> “name:~Name,phone_number:〜Phone Number,inactive:~Inactive”
由于
答案 0 :(得分: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)/
,这会在下一个字符之前允许多个空格。