我需要找到一种方法来删除字体系列样式中字体名称周围的单引号。
所以这...
<span style="font-family: 'Verdana'; color: #0000ff; font-size: 10pt;"><span style="font-family: 'Arial';"><strong>2.0: Scope</strong></span></span>
会变成这样...
<span style="font-family: Verdana; color: #0000ff; font-size: 10pt;"><span style="font-family: Arial;"><strong>2.0: Scope</strong></span></span>
我只关心用双引号括起来的样式属性。如果它们被单引号包围,那么我知道字体名称不会被单引号包围。
我必须在 C# 中执行此操作,因为处理此 Html 的应用程序作为 Windows 服务运行。
我知道通常使用正则表达式解析 Html 是不可以的,但我希望这可能是一个例外,因为我正在寻找一个非常具体的案例。我确实可以访问 Html 解析器,但与正则表达式相比非常慢。
这是我能想到的最好的……
var html = "<span style=\"font-family: 'Verdana'; color: #0000ff; font-size: 10pt;\"><span style=\"font-family: 'Arial';\"><strong>2.0: Scope</strong></span></span>";
var newHtml = Regex.Replace(html, "style(.*)=(.*)\"(.*)font-family:(.*?)[\">]", m => m.Value.Replace("'", ""));
它实现了正确的目标,但并没有真正找到正确的匹配项。符合这个...
style="font-family: Verdana; color: #0000ff; font-size: 10pt;"><span style="font-family: Arial;"
我想要做的是找到两个这样的匹配......
style="font-family: 'Verdana'; color: #0000ff; font-size: 10pt;"
style="font-family: 'Arial';"
作为一个正则表达式新手,我似乎找不到正确的组合。
或者更具体地说,我需要一种方法来在由单引号包围的字体系列中找到一个值,然后从该值中删除单引号。
有人可以帮我想出适当的正则表达式吗?
在这种情况下,是否有替代正则表达式可以更好地工作?