这也将赶上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
感谢您的有用答案。我会用你的建议更新我的代码。 –