2011-08-05 64 views
1

編輯對不起,我意識到我的問題是一個沒有問題。 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

這應該工作:

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

實施例:http://ideone.com/fgAK7

更新:這一個更好(和更短):

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