这个问题已经在这里有了答案:

正则表达式总是让我挠头。

在我的Windows Store App中,需要将html内容<a href="www.example.com">替换为<a href="javascript:window.external.notify('www.example.com')">为了拦截WebView中的Navigation事件。

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

您可以教我如何使用C#进行操作吗?

===============>>#1 票数: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
);

===============>>#2 票数:1

我会尝试这样的事情:

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

===============>>#3 票数:0

您应该使用$1而不是\\\\0

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

  ask by Youngjae translate from so

未解决问题?本站智能推荐: