替换行尾文本但保留换行符

时间:2011-08-05 06:58:16

标签: ruby regex

编辑 抱歉,我发现自己的问题没有问题。 Markdown消耗了换行符。尽管如此,我的代码仍有问题,答案给出了正确的解决方案。

我正在使用Ruby,我想在某些行的末尾找到ID号,将其转换为URL。例如

>253
irrelevant text
>254

> foo.php/253
irrelevant text
> foo.php/254

我尝试了类似下面的内容,但新行/回车消耗了。

text.gsub!(  /^(> ?)(\d+)(\s*$)/  ,  "\\1\\2\\3"  )

结果将全部在一行中。我也不知道它是/r,/ n还是/ r / n,所以我不想硬编码换行符。

1 个答案:

答案 0 :(得分:1)

这应该有效:

text.gsub(/(?:^|(?<=[\r\n]))>[ \t]*(\d+)(?=\s*?(?:$|[\r\n]))/m, "> foo.php/\\1")

示例:http://ideone.com/fgAK7

更新:这个更好(也更短):

/(?<![^\r\n])>[ \t]*(\d+)[ \t]*(?![^\r\n])/