這也將趕上www.test.com
:
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑---------------------↑↑
只是圍繞着部分這就是可選的,追加一個問號。 你可以檢查出來here.
的第一場比賽在這個表達式(匹配與定義「(」和「)」)是整個URL。所以,你可以使用替換這樣的:
Regex rgxUrls = new Regex(pattern);
string result = rgxUrls.Replace(yourText, "<a href=\"$1\"> space for custom text </a>");
↑ Inserts first match
當我用$1
你也可以使用$2 - $5
。檢查上面的圖片,顯示哪些組正在捕獲url的哪一部分。
完整的測試可以發現here。
只需點擊頂部的執行即可。
輸出:
根據該意見,字幕組的工作原理:
Text: "this is your text to search"
Pattern: "text to"
比賽[0]總是匹配你的整個比賽text to
。上面的每個組像Match[1]
或Match[2]
都必須用「(」和「)」來定義。
Text: "this is your text to search"
Pattern: "text (to)"
Match[0]: "text to"
Match[1]: "to"
Pattern: "text (t(o))"
Match[0]: "text to"
Match[1]: "to"
Match[2]: "o"
帶「()」的標題的作品從外部到內部。
$1
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑--------------------------------------------------------------------------------------------------↑
$2 (http://)
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑---------------------↑
$3 (http)
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑--------------↑
$4 (.com)
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑----------↑
$5 (/appendedSubdirectory/anotherOne)
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
↑--------------------------------------------------↑
我不能在這裏解釋有關正則表達式的一切。這個問題看起來解決了我。如果你根據正則表達式開始了一個更新的問題並展示你之前完成的一些工作。
來源
2016-04-16 07:43:24
C4u
謝謝你的回答。但我必須學會編輯比賽價值。 $ 1正在獲得完整的地址。我想編輯$ 1例如matched_value.Substring(0,5)什麼是正確的方式? 第二個問題:www.google.com網址找到並由您的代碼替換,但該鏈接沒有http。所以當我點擊鏈接時,它會顯示mydomain.com/www.google.com如何添加與http的鏈接 –
你想用'http:// www.google.de'替換'www.google.de'?我將編輯我的問題並解釋組標題。 – C4u
感謝您的有用答案。我會用你的建議更新我的代碼。 –