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



EDIT 对不起,我意识到我的问题不是问题。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,所以我不想硬编码换行字符。

应该可以:

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

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

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

/(?<![^rn])>[ t]*(d+)[ t]*(?![^rn])/

最新更新