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

dst*_*iko 3 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">
Run Code Online (Sandbox Code Playgroud)

变成这样:

<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">
Run Code Online (Sandbox Code Playgroud)

有人知道我必须编写的用于搜索和替换的正则表达式吗?

谢谢。

And*_*ers 5

你可以这样做:

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


Wik*_*żew 5

使用此正则表达式替换:

(?:\G(?!^)|\bstyle=")([^:]*):\s*([^;]*)[;"](?=[^>]*>)
Run Code Online (Sandbox Code Playgroud)

替换为(注意末尾的空格):

$1="$2" 
Run Code Online (Sandbox Code Playgroud)

这是一个演示

解释

  • (?:\G(?!^)|\bstyle=")- 我们将开始匹配的边界。边界是前一场比赛的结束 ( \G(?!^)) 或style="(由于\bstyle=")。
  • ([^:]*) - 包含 0 个或多个字符的序列的第一个捕获组 :
  • : - 一个字面意思 :
  • \s* - 0 个或多个空格
  • ([^;]*) - 包含 0 个或多个字符的序列的第二个捕获组 ;
  • [;"]-无论是;"
  • (?=[^>]*>) - 我们检查结束边界以确保我们在结束标签内。