我正在尝试使用正则表达式替换多行Ruby字符串的行符号'$'的最后一行。以下代码替换了第一个代码,但这不是我想要的:
string.sub!(/$/, "replace")
有什么想法吗? 在此先感谢:)
答案 0 :(得分:2)
str1 = "hello\nworld\nsexytime"
str2 = "hello\nworld\nsexytime\n"
puts str1.sub(/(\n.+)\z/,'LAST\\1')
#=> hello
#=> worldLAST
#=> sexytime
puts str2.sub(/(\n.*)\z/,'LAST\\1')
#=> hello
#=> world
#=> sexytimeLAST
答案 1 :(得分:1)
试试这个:
foo = "first$line $
second$line $
third$line $"
foo.gsub! /\$$/, "replace"
puts foo
# =>
first$line replace
second$line replace
third$line replace
它替换你的$符号(因为这对regexp有特殊的意义,你必须逃避它)在行的末尾(因此你使用第二个$符号)。如果您必须准备多次替换,请使用gsub
方法 - sub
只进行一次。
答案 2 :(得分:0)
string.sub!(/\n?\z/, 'replace')