Ruby正则表达式如何在回溯后替换每个项?

Ruby正则表达式如何在回溯后替换每个项?,ruby,regex,Ruby,Regex,我正在努力用HTML替换一些空格;人物。 我试图用一个nbsp替换每个空间;字符(不是用一个nbsp;替换所有字符) 以下是我目前正在尝试的: "My String: ".gsub(/(?<=:).*\s/, '&nbsp;') =>"My String:&nbsp;" “我的字符串:”.gsub(/(?“我的字符串:” 但这是我能做到的最接近的(我有点明白为什么它不起作用,但我不能把它带到下一步——如果有一步的话?) 有没有任何正则表达式神

我正在努力用HTML替换一些空格;人物。 我试图用一个nbsp替换每个空间;字符(不是用一个nbsp;替换所有字符)

以下是我目前正在尝试的:

 "My String:         ".gsub(/(?<=:).*\s/, '&nbsp;')
 =>"My String:&nbsp;" 
“我的字符串:”.gsub(/(?“我的字符串:”
但这是我能做到的最接近的(我有点明白为什么它不起作用,但我不能把它带到下一步——如果有一步的话?)


有没有任何正则表达式神可以帮助你?

如果你对你的正则表达式感到满意,你可以:

p "My String:         ".gsub(/(?<=:).*\s/){|x| '&nbsp;'*x.size }
#=> "My String:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"

每一个,但不是全部?对我来说没有意义。@SergioTulentsev-我的意思是如果我有5个空格,我想要5个破折号,而不是1个破折号来代表这5个空格。我会尽量澄清。谢谢Hirolau!很有魅力-我不知道你可以像第一个例子那样通过gsub一个街区。不过,我认为第二个更干净。干杯:)
# Any single space character that must be followed by 0+ spaces and then end of string.
string.gsub(/\s(?=\s*\Z)/,'&nbsp;')