2014-01-08 71 views
2

我有一個文本文件,其中包含想用a標籤替換的網址,這些網址會打開一個新標籤頁。我將.txt文件轉換爲.md文件並希望可點擊鏈接。用html網址替換所有文本網址

我在下面(1)所示一個MWE,(2)所需的輸出(3)我的初步嘗試創建一個函數(I假設這將/可能需要gsubsprintf函數來實現):

MWE:

x <- c("content here: http://stackoverflow.com/", 
    "still more", 
    "http://www.talkstats.com/ but also http://www.r-bloggers.com/", 
    "http://htmlpreview.github.io/?https://github.com/h5bp/html5-boilerplate/blob/master/404.html" 
) 

**希望的輸出:**

> x 
[1] "content here: <a href="http://stackoverflow.com/" target="_blank">http://stackoverflow.com/</a>"              
[2] "still more"                     
[3] "<a href="http://www.talkstats.com/" target="_blank">http://www.talkstats.com/</a> but also <a href="http://www.r-bloggers.com/" target="_blank">http://www.r-bloggers.com/</a>"        
[4] "<a href="http://htmlpreview.github.io/?https://github.com/h5bp/html5-boilerplate/blob/master/404.html" target="_blank">http://htmlpreview.github.io/?https://github.com/h5bp/html5-boilerplate/blob/master/404.html</a>" 

最初嘗試解決:

repl <- function(x) sprintf("<a href=\"%s\" target=\"_blank\">%s</a>", x, x) 
gsub("http.", repl(), x) 

一角情況下使用"http.\\s"的正則表達式是字符串不得以空格結尾,因爲在x[3]或URL被包含http這不僅要分析一次(如在x[4]中看到的)。

請注意R的 REGEX特定於R;
答案,向其他語言不可能奏效

回答

5

這適用於你的樣品x,並使用您的repl方法:

gsub("(http://[^ ]*)", repl('\\1'), x) 

或未經repl方法:

gsub("(http://[^ ]*)", '<a href="\\1" target="_blank">\\1</a>', x) 
+0

完美謝你好。 –