-1

これはhtmlです:

<font color="#000fff" size="1" face="Arial">Genuine Windows® 7 Home Premium (64-bit)</font>

これは私が変換したかったものです:

[color="#000fff"]Genuine Windows® 7 Home Premium (64-bit)[/color]

これは私が試したものです:

var post = Regex.Replace(post, "<font color=\"([a-fA-F0-9\\#]+)\">(.*?)</font>",
                                 m => "[color=\"" + m.Groups[1].Value + "\"]" + m.Groups[2].Value + "[/color]");

その一致していません。

4

3 に答える 3

5

いいえ、あなたはに対応していないのでsize="1" face="Arial"。これを試して:

"<font color=\"([a-fA-F0-9\\#]+)\"[^>]*>(.*?)</font>"

[^>]*(開始フォントタグで他のすべてをキャプチャするための追加に注意してください)

于 2012-08-31T14:36:07.290 に答える
1

あなたの修正は:

using System;
using System.Text.RegularExpressions;

public class Test
{
  public static void Main()
  {
    string post = "<font color=\"#000fff\" size=\"1\" face=\"Arial\">Genuine Windows® 7 Home Premium (64-bit)</font>";
    post = Regex.Replace(post, "<font color=\"([a-fA-F0-9\\#]+)\"[^>]*>(.*?)</font>", 
      m => "[color=\"" + m.Groups[1].Value + "\"]" + m.Groups[2].Value + "[/color]");
    Console.WriteLine(post);
  }
}

ここでこのコードをテストします。

于 2012-08-31T14:44:59.833 に答える
-1

更新:パフォーマンスのボトルネックが修正されました。実際の動作をご覧ください。

探す:

<font.*?color="([^"]*)"[^>]*>([^<]*)</font>

注: これは、色属性が確実に存在することを前提としています。

交換:

[color=$1]$2[/color]
于 2012-08-31T14:50:51.063 に答える