如何使用正则表达式在每个字母前加上符号

时间:2016-05-31 02:32:03

标签: ruby regex

我有一个像这样的字符串时间格式:d-m-Y H:i。我想格式化它:%d-%m-%Y %H:%i

如何使用正则表达式在%前加上每个字母?

3 个答案:

答案 0 :(得分:2)

这是非常基本的String#gsub

str = "d-m-Y H:i"
str.gsub(/[a-z]/i, '%\0')
# => "%d-%m-%Y %H:%i"

在替换字符串'%\0'中,\0表示整个匹配,在这种情况下是匹配的字母,因此这表示“将每个字母替换为%,然后是字母“。

答案 1 :(得分:1)

sorted 'd-m-Y H:i'.gsub(/[a-zA-Z]+/) { |sym| "%#{sym}" }

答案 2 :(得分:1)

'd-m-Y H:i'.gsub(/(?=[a-z])/i, '%')
  #=> "%d-%m-%Y %H:%i" 

这将读取"将每个空字符串替换为后跟小写或大写字母的字符'%'"。 (?=[a-z])是一个积极的先行。