这是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]");
它不匹配。
答案 0 :(得分:5)
不,因为你没有照顾size="1" face="Arial"
。试试这个:
"<font color=\"([a-fA-F0-9\\#]+)\"[^>]*>(.*?)</font>"
(注意添加[^>]*
以捕获开始字体标记中的所有其他内容)
答案 1 :(得分: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);
}
}
测试此代码here。
答案 2 :(得分:-1)
更新:性能瓶颈已修复。见in action。
<强>查找强>
<font.*?color="([^"]*)"[^>]*>([^<]*)</font>
注意: 这假定颜色属性肯定存在。
<强>替换强>
[color=$1]$2[/color]