Html Regex search&;替换内联CSS样式
我需要搜索并替换内部HTML标记,即内联的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">
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}”
style=“.*”
使用此正则表达式替换:
(?:\G(?!^)|\bstyle=")([^:]*):\s*([^;]*)[;"](?=[^>]*>)
替换为(注意末尾的空格):
这是一个
解释
-开始匹配的边界。该边界是上一个匹配((?:\G(?)\bstyle=“)
)或\G(?)
(由于样式=“
)的结束\bstyle=“
-第一个捕获组,包含0个或更多字符的序列,而不是([^::]*)
:
-文字:
:
-0或更多空格\s*
-第二个捕获组,它包含除([^;]*)
以外的0个或更多字符的序列;
-要么是[;”]
代码>或
“
-我们检查结束边界以确保我们在结束标记内(?=[^>]*>)
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'
。非常有帮助!非常感谢你,你帮了我两个小时的工作!