C#转换标签与Regex链接

时间:2015-01-19 07:55:43

标签: c# regex

我有这样的文字:

  

我的文字我的文字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>");
}

2 个答案:

答案 0 :(得分:0)

您可以使用此RegEx来捕捉[{~yourtag~}]

\[{~.*?~}]

Rubular Test。您将不得不为.NET修改一点。

答案 1 :(得分:0)

将我的评论转化为答案。

使用这个(更简单)正则表达式:

\[\{~(.*?)\|(.*?)~\}\]

它将捕获组1中的关键字和组2中的链接。“技巧”是使用非贪婪。 (并妥善逃脱特殊字符。)