我正在使用以下一组图像地图标记;
<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"));
有人可以帮助我。
由于
答案 0 :(得分:0)
我可以看到可能导致问题的两件事。首先,你的正则表达式正在检查格式为href=http://example.com
的字符串。请注意,URL周围没有引号。因此,我们需要更新正则表达式以处理输入包含的双引号。
第二个是您正在使用匹配的组1
,但您的正则表达式实际上是匹配两个单独的组(并且您想要替换第二个组)。您根本不需要第一个匹配组,因此我们实际上可以删除此部分。
总之,请尝试将正则表达式更新为:
href="([^"]+)"
在您的变量中,它看起来像:
string pattern = @"href=""([^""]+)""";
答案 1 :(得分: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();
希望你明白了。