正则表达式搜索&替换内联CSS样式

时间:2015-07-13 18:29:08

标签: 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">

这样的事情:

<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">

有人知道搜索的正则表达式吗?替换我必须写,以便这样做?

感谢。

2 个答案:

答案 0 :(得分:4)

你可以这样做:

  1. 匹配style="(.*?)"并将捕获的组保存为变量。
  2. 在该变量上,匹配([a-zA-Z-]+):\s*(.*?)\s*;并将其替换为{1}="{2}"
  3. style=".*?"替换为数字2的结果。

答案 1 :(得分:4)

使用此正则表达式替换:

(?:\G(?!^)|\bstyle=")([^:]*):\s*([^;]*)[;"](?=[^>]*>)

替换为(记住末尾的空格):

$1="$2" 

这是demo

<强>说明

  • (?:\G(?!^)|\bstyle=") - 我们开始匹配的边界。边界是上一场比赛的结束(\G(?!^))或style="(由于\bstyle=")。
  • ([^:]*) - 第一个捕获组,其中包含除:以外的0个或多个字符的序列
  • : - 文字:
  • \s* - 0个或更多空格
  • ([^;]*) - 第二个捕获组,其中包含除;以外的0个或多个字符的序列
  • [;"] - ;"
  • (?=[^>]*>) - 我们检查结束边界以确保我们在结束标记内。