C# 如何用文本C中的超链接/锚定标记替换带有括号的url#
我试图用锚标记替换所有出现的URL。 我可以对大多数URL字符执行此操作,但当URL中存在C# 如何用文本C中的超链接/锚定标记替换带有括号的url#,c#,regex,winforms,C#,Regex,Winforms,我试图用锚标记替换所有出现的URL。 我可以对大多数URL字符执行此操作,但当URL中存在(和)时,代码会中断 例如 https://example.com/Heavy-Industry/Global-Perfluorosulfonic-Acid-(PFSA)-制造商的市场状况-类型和应用-历史和预测-2025年#样本 这是我的密码: protected string MakeLink(string text) { string text2 = Regex.Replace(text,
(
和)
时,代码会中断
例如
https://example.com/Heavy-Industry/Global-Perfluorosulfonic-Acid-(PFSA)-制造商的市场状况-类型和应用-历史和预测-2025年#样本
这是我的密码:
protected string MakeLink(string text)
{
string text2 = Regex.Replace(text,
@"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)",
"<a target='_blank' href='$1'>$1</a>");
return text2;
}
受保护的字符串MakeLink(字符串文本)
{
字符串text2=Regex.Replace(文本,
@“((http | ftp | https):\/\/[\w\-\+(\.[\w\-\+)+([\w\-,@?^=%&;:/~\+\\\\+]*[\w\-\@?^=%&;/\+\\\+])”,
"");
返回文本2;
}
您应该将括号添加到字符类[\w\,@?^=%&;:/~+#()]
如果您不使用捕获组,我认为您可以通过使用单个捕获组来替换,从而使您的正则表达式更加紧凑
请注意,您不必在character类中转义点和加号
((?:https?| ftp):\/\/[\w\-\++(?:\.[\w\-\+)+(?:[\w\-,@?^=%&;:/+\\\\\()]*[\w\-@?^=%&;/+\\\\+]),
|