0

我有这样的html标签:

<p class=MsoNormal align=center style='margin-top:1.0pt;margin-right:0in;margin-bottom:1.0pt;margin-left:0in;text-align:center;text-indent:0in;line-height:115%;text-autospace:none'>Something</p>

现在,我想让它像这样:

<p style='text-align:center;'>Something</p>

我该怎么做?

4

1 回答 1

0

由于您标记了正则表达式,因此这是一个正则表达式替换,它将根据您所说的进行匹配和替换:

<p class=MsoNormal [^>]*style='[^']*(text-align:[A-Za-z]*;?)[^']*'>(.*?)</p>

替换:

<p style='$1'>$2</p>

这不是特别有效或不一定是最好的方法。微妙的错误是如果<p>标签包含另一个嵌套<p>(我很确定这不是有效的标记,但认为最好还是提一下),因为它会匹配</p>嵌套的关闭<p>而不是我们的外部试图匹配。

另一个潜在的错误是,如果元素内有嵌套的转义单引号,它会搞砸style,例如style='attr=\'value\';text-align:center;'. 这可以用更复杂的正则表达式来解决,但有可能使它变得非常难以阅读。

在我看来,涉及解析的解决方案会好很多,例如 NiftyDude 的 javascript 建议。

于 2012-05-17T11:11:25.367 回答