正则表达式改变href ="链接" to href ="通知(' link')"

时间:2014-04-21 03:07:12

标签: c# regex url

正则表达式总让我头疼。

在我的Windows应用商店应用中,需要将html内容<a href="www.example.com">替换为<a href="javascript:window.external.notify('www.example.com')">才能拦截WebView中的导航事件。

我试过Regex.Replace(content, "<a href=\"(.+)\">", "<a href=\"javascript:window.external.notify('\\0')\">");但没有运气。

你能教我如何在C#中做到吗?

3 个答案:

答案 0 :(得分:1)

这应该适合你:

using System;
using System.Text.RegularExpressions;

namespace CSTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Regex re = new Regex("<a href=\"(.+)\">", RegexOptions.Compiled);

            string input = "<a href=\"www.example.com\">";
            string res = re.Replace(input, 
                "<a href=\"javascript:window.external.notify('$1')\">");

            Console.WriteLine(res);
        }
    }
}

你几乎拥有它。您唯一的问题是您使用\\0代替$1匹配的群组。

如果您希望拨打Regex.Replace的静态版本,可以使用:

string res = Regex.Replace(input, 
    "<a href=\"(.+)\">", 
    "<a href=\"javascript:window.external.notify('$1')\">",
    RegexOptions.Compiled
);

答案 1 :(得分:1)

我会尝试这样的东西:

Regex.Replace(content, "(?<=<a href=\").+(?=\">)", "javascript:window.external.notify('$0')");

答案 2 :(得分:0)

您应该使用$1代替\\0

我们在c#中使用$进行反向引用。