如何使用正则表达式删除html中的font-family属性?

时间:2015-09-07 06:10:12

标签: c# regex vb.net

我有以下HTML:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8" />
  <title></title>
</head>
<body>
  <p style="margin: 0in 0in 0pt; text-align: center;" class="ng-scope" align="center">
    <strong><span style='color: black; font-family: "Arial","sans-serif"; font-size: 18pt;'>Some Text</span></strong>
  </p>
  <p style="margin: 0in 0in 0pt;" class="ng-scope"><span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text.</span></p>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope"><span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text.</span></p>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope"><span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text. </span></p>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope">
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Also over</span>
    <span style='color: black; font-family: "Cambria Math","serif"; font-size: 12pt;'>‐</span>
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>the</span>
    <span style='color: black; font-family: "Cambria Math","serif"; font-size: 12pt;'>‐</span>
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text.</span>
  </p>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope">
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text </span>
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Some Text.</span>
  </p>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope">&nbsp;</p>
  <div class="ng-scope">
    <span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>
      <div class="row">
        <div class="panel panel-primary col-sm-12 col-xs-24 col-md-8"><img class="img-responsive" src="data:image/png;base64,iVBORw0KGgGSE5XUSzMPLwAAAABJRU5ErkJggg=="></div>
      </div>
    </span>
  </div>
  <div class="ng-scope">&nbsp;</div>
  <p style="margin: 0in 0in 0pt;" class="ng-scope"><span style='color: black; font-family: "Arial","sans-serif"; font-size: 12pt;'>Signature of Patient or Legal Guardian</span> </p>
     </body>
</html>

所以,我需要的只是有font-family属性的地方,只需删除它们以及相应的Property。 所以,基本上,它应该从font-family开始删除到下一个分号(;)。使用RegEx并在C#/ VB中可以。

提前致谢。

3 个答案:

答案 0 :(得分:3)

我认为最好在这里使用HtmlAgilityPack,因为在html中可能有这样的文字,而不是style,如果事实html只是喜欢你的演示,你也可以使用下面的Regex替换

font-family:[^;']*(;)?

这个模式也可以匹配与;不匹配的样式,就像style='font-family: "Arial","sans-serif"'

一样

答案 1 :(得分:0)

鉴于您的html位于string - 变量htmlWithFont中,您可以这样做:

var htmkWithoutFont = Regex.Replace(htmlWithFont, "font-family:\\s*\".*\";?", string.Empty);

答案 2 :(得分:0)

匹配font-family而不是mso-bidi-font-family的另一个正则表达式:

(?<=;|"|\s)font-family:[^;']*(;)?

此模式仅与font-family匹配,如果它是第一个样式属性,或者如果之前有;或空格