-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 回答