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

問題を引き起こしている可能性のある2つのことがわかります。1つ目は、正規表現が。の形式の文字列をチェックしていることですhref=http://example.com。URLの前後に引用符がないことに注意してください。したがって、入力に含まれるような二重引用符を処理するように正規表現を更新する必要があります。

2つ目は、一致したグループを使用している1が、正規表現が実際には2つの別々のグループと一致していることです(2番目のグループを置き換えたい場合)。最初に一致するグループはまったく必要ないので、実際にこの部分を削除できます。

全体として、正規表現を次のように更新してみてください。

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 に答える