我想用 www.google.com 替换 url 例如 www.google.com 或http://www.google.com我有一个代码
str = Regex.Replace(str,
@"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)",
"<a target='_blank' href='$1'>$1</a>");
Run Code Online (Sandbox Code Playgroud)
它正在使用,http://www.google.com但无法使用,www.google.com或者subdomain.google.com哪个正则表达式代码与每个 url 链接匹配。例如,当我写一个长链接时,它会写出与 url 相同的内容
http://www.google.com/search/asdadad/sdsdsd/sadasdx-sadasd-weqeqwe-zxcxzc.com
Run Code Online (Sandbox Code Playgroud)
. 我想把它写成
<a href="http://www.google.com/search/asdadad/sdsdsd/sadasdx-sadasd-weqeqwe-zxcxzc.com">google.com/asdas... </a>
做这个的最好方法是什么?我是正则表达式的新手
这也将捕获www.test.com:
(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
?---------------------??
Run Code Online (Sandbox Code Playgroud)
只需将可选的部分括起来并附加一个问号。你可以在这里查看。
此正则表达式中的第一个匹配项(匹配项用“(”和“)”定义)是整个 url。所以你可以像这样使用替换:
Regex rgxUrls = new Regex(pattern);
string result = rgxUrls.Replace(yourText, "<a href=\"$1\"> space for custom text </a>");
? Inserts first match
Run Code Online (Sandbox Code Playgroud)
我用过的地方$1你也可以使用$2 - $5. 检查上面显示哪些组正在捕获 url 的哪个部分的图像。
完整的测试可以在 这里找到。
只需单击顶部的执行。
根据评论,组标题的工作原理:
Text: "this is your text to search"
Pattern: "text to"
Run Code Online (Sandbox Code Playgroud)
Match[0] 将始终匹配您的整个 match 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"
Run Code Online (Sandbox Code Playgroud)
带有“()”的标题从外到内起作用。
$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\-\@?^=%&\/~\+#])?)
?--------------------------------------------------?
Run Code Online (Sandbox Code Playgroud)
我无法在这里解释有关正则表达式的所有内容。这个问题对我来说似乎解决了。如果您根据正则表达式有更深层次的问题,请开始一个新问题并展示您之前所做的一些努力。
| 归档时间: |
|
| 查看次数: |
2842 次 |
| 最近记录: |