如何替换多行字符串的行符号的最后一行

时间:2011-11-23 21:14:48

标签: ruby regex

我正在尝试使用正则表达式替换多行Ruby字符串的行符号'$'的最后一行。以下代码替换了第一个代码,但这不是我想要的:

string.sub!(/$/, "replace")

有什么想法吗? 在此先感谢:)

3 个答案:

答案 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')