正则表达式替换转义字符c#

时间:2012-08-31 14:34:13

标签: c# regex

这是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]");

它不匹配。

3 个答案:

答案 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]