我有这样的文字:
我的文字我的文字bla bla bla splendid, [{~mykeyword | mylink~}] ,有些 其他文字 [{〜我的关键字2 | mylink2~}] ,bla bla等......
我希望将所有以[{~
开头并以~}]
结尾的部分替换为链接,|
将链接和关键字分开。关键字可以有空间。
<a href="mylink">mykeyword</a><br>
<a href="mylink2">my keyword 2</a>
我构建了以下与任何结果都不匹配的函数:
public static string ConvertUrlsToLinks(string msg)
{
string regex = @"(\[{~(\^\w+( +\w+)*$)\|(^\w+( +\w+)*$)\~}])";
Regex r = new Regex(regex, RegexOptions.IgnoreCase);
return r.Replace(msg, "<a href=\"$1\">$2</a>");
}
我猜它来自正则表达式定义。
更新: 来自Biffen的正则表达式在评论中与我的功能一起工作正常。谢谢!
工作职能:
public static string ConvertUrlsToLinks(string msg)
{
string regex = @"\[\{~(.*?)\|(.*?)~\}\]";
Regex r = new Regex(regex, RegexOptions.IgnoreCase);
return r.Replace(msg, "<a href=\"$1\">$2</a>");
}
答案 0 :(得分:0)
答案 1 :(得分:0)
将我的评论转化为答案。
使用这个(更简单)正则表达式:
\[\{~(.*?)\|(.*?)~\}\]
它将捕获组1中的关键字和组2中的链接。“技巧”是使用非贪婪。 (并妥善逃脱特殊字符。)