0

我正在尝试使用 Regex.Replace 创建超链接。我想这样做,以便用户可以点击我创建的按钮并创建产品链接。这样,如果 url 由于某种原因发生更改,我将不必更改数据输入端的逻辑。用户将提交一段文本,我将有如下格式的内容:

"[!product:123456:Click Me!]" 

其中 p 代表产品。Click Me 是链接上显示的文本。123456 是标识符。该链接应如下所示:

<a href="www.mywebsite.com/product/123456">Click Me</a>

到目前为止,我有这个:

var output = Regex.Replace(model.Body, @"\[!([^!]*)\!]", "<a href='http://www.mywebsite.com/$1'> link </a>");

返回:

 http://www.mywebsite.com/p:165411:Click Me

有什么办法可以做一个正则表达式,让我在 [! 和!]分离出由“:”分隔的数据?

这是我的想法:

var output = Regex.Replace(model.Body, SOME REGEX HERE, "<a href='http://www.mywebsite.com/$1/$2'> $3 </a>");

希望这是关于我正在尝试做的足够的信息。任何帮助将不胜感激。

4

1 回答 1

2

这个正则表达式怎么样?

\[!(.*):(.*):(.*)!\]

在c#中

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "[!product:123456:Click Me!]";
            var regex = new Regex("\\[!(.*):(.*):(.*)!\\]", RegexOptions.IgnoreCase);

            var result = regex.Replace(text, "<a href='http://www.mywebsite.com/$1/$2'> $3 </a>");
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}
于 2012-09-24T21:08:38.093 回答