使用Regex将新网址替换为给定文本中的现有网址

时间:2012-09-06 09:58:43

标签: c# regex

我尝试使用正则表达式替换给定文本中的现有网址。我似乎无法获得正在使用的正则表达式模式的匹配:

string regex = "<a href=\"http://domain/page.asp?id=(\\d+)&amp;oid=(\\d+)&amp;type=(\\w+)\">";

有人可以帮我写一个正确的模式,找到看起来像的网址:

"<A href=\"http://domain/page.asp?id=38957&amp;oid=2497&amp;type=JPG\">"

以下是我的测试代码,找不到我使用的模式匹配:

string result = string.Empty;

string sampleText = "<A href=\"http://domain/page.asp?id=38957&amp;oid=2497&amp;type=JPG\"><U>Click here for Terms &amp; Conditions...</U></A>";

string regex = "<a href=\"http://domain/page.asp?id=(\\d+)&amp;oid=(\\d+)&amp;type=(\\w+)\">";
        Regex regEx = new Regex(regex, RegexOptions.IgnoreCase);

result= regEx.Replace(text, "<a href=\"/newPage/Index/$1&opid=$2)\">");

1 个答案:

答案 0 :(得分:1)

除了.?是正则表达式中的特殊字符外,一切看起来都很正常,因此需要对它们进行转义以将其视为文字。所以你的表达:

string regex = "<a href=\"http://domain/page.asp?id=(\\d+)&amp;oid=(\\d+)&amp;type=(\\w+)\">";

需要:

string regex = "<a href=\"http://domain/page\\.asp\\?id=(\\d+)&amp;oid=(\\d+)&amp;type=(\\w+)\">";

请注意.?前面的反斜杠。