Html Regex search&;替换内联CSS样式

Html Regex search&;替换内联CSS样式,html,css,regex,sublimetext2,Html,Css,Regex,Sublimetext2,我需要搜索并替换内部HTML标记,即内联的CSS,以避免使用style=”“内联属性 例如,替换如下所示的内容: <table border="0" cellpadding="0" cellspacing="0" width="100%" style="font-family: Helvetica;line-height: 100%;margin-top: 20px; text-align: left;vertical-align: bottom;color: #202020">

我需要搜索并替换内部HTML标记,即内联的CSS,以避免使用
style=”“
内联属性

例如,替换如下所示的内容:

<table border="0" cellpadding="0" cellspacing="0" width="100%"  style="font-family: Helvetica;line-height: 100%;margin-top: 20px; text-align: left;vertical-align: bottom;color: #202020">

变成这样:

<table border="0" cellpadding="0" cellspacing="0" width="100%" font-family="Helvetica" line-height="100%" margin-top="20px" text-align="left" vertical-align="bottom" color="#202020">

有人知道搜索和替换的正则表达式我必须写才能做到这一点吗


谢谢。

您可以这样做:

<table border="0" cellpadding="0" cellspacing="0" width="100%"  style="font-family: Helvetica;line-height: 100%;margin-top: 20px; text-align: left;vertical-align: bottom;color: #202020">
  • 匹配
    style=“(.*?”
    并将捕获的组保存到变量中
  • 在该变量上,匹配
    ([a-zA-Z-]+):\s*(.*)\s*
    并将其替换为
    {1}=“{2}”
  • 用数字2的结果替换
    style=“.*”

  • 使用此正则表达式替换:

    (?:\G(?!^)|\bstyle=")([^:]*):\s*([^;]*)[;"](?=[^>]*>)
    
    替换为(注意末尾的空格):

    这是一个

    解释

    • (?:\G(?)\bstyle=“)
      -开始匹配的边界。该边界是上一个匹配(
      \G(?)
      )或
      样式=“
      (由于
      \bstyle=“
      )的结束
    • ([^::]*)
      -第一个捕获组,包含0个或更多字符的序列,而不是
    • -文字
    • \s*
      -0或更多空格
    • ([^;]*)
      -第二个捕获组,它包含除
      以外的0个或更多字符的序列
    • [;”]
      -要么是
    • (?=[^>]*>)
      -我们检查结束边界以确保我们在结束标记内

    我认为你不可能一次就做到这一点。我会用PHP中的
    preg\u replace\u callback
    来做到这一点。从
    style=“(.+?)开始“
    。也没有办法知道属性在这条路线上是否有效..你想做什么?
    font-family
    标签上的
    font-family
    属性根本不会起任何作用。我添加了解释。谢谢,但是当同一个标签中有2个
    style=“some css style”
    时,您的正则表达式会失败string@eric:请提供一些示例输入字符串(最好作为regex101.com链接)。猜猜看:也许
    (?:\G(?)\bstyle=“)([^:>]*):\s*([^;>]*)[;”](?=[^>]*>)
    会对你有用。例如:`2014年GDP增长
    2014年GDP增长2.9%
    s$390.0 Bil如何为企业筹集资金`code>style=“(.*>”
    非常好,在我的例子中,我使用相同的匹配将所有这些绝对高度定义替换为
    height='auto'
    。非常有帮助!非常感谢你,你帮了我两个小时的工作!