1

我有以下一组图像地图标签;

<map name="planetmap">
  <area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun">
  <area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury">
  <area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus">
</map>

我需要提取 href 属性并将其替换为另一个 url

我正在使用以下代码,但似乎不起作用;

string input = @"<area shape=""rect"" href=""http://www.google.com"">";
            string pattern = "(href=([^ ]+))";
Regex rgx = new Regex(pattern);
string result2 = rgx.Replace(input, m => m.Groups[1].Value.Replace(result,"test.com"));

有人可以帮助我。

谢谢

4

2 回答 2

0

我可以看到可能导致问题的两件事。第一个是,您的正则表达式正在检查格式为href=http://example.com. 请注意,URL 周围没有引号。因此,我们需要更新正则表达式以处理您的输入所包含的双引号。

第二个是您正在使用匹配的组1,但您的正则表达式实际上匹配两个单独的组(并且您想替换第二个组)。您根本不需要第一个匹配组,因此我们实际上可以删除这部分。

总之,尝试将您的正则表达式更新为:

href="([^"]+)"

在您的变量中,它将如下所示:

string pattern = @"href=""([^""]+)""";
于 2012-10-09T03:21:25.043 回答
0

看看这个例子:

StreamReader reader = new StreamReader("D:\\stack.html");
string testString = reader.ReadToEnd();

string replacedString = Regex.Replace(testString, @"(?<=href=).+?(?=\s)", "\"test.com\"");

StreamWriter writer = new StreamWriter("D:\\stack1.html");
writer.WriteLine(replacedString);

writer.Close();
reader.Close();

希望你明白了。

于 2012-10-09T03:38:08.627 回答