我知道,不应该用正则表达式解析HTML。解析是获得真正有效的HTML缩小的唯一方法。
但如果我不担心完美呢?我只想从HTML中获得合理数量的空白。
而不是将正则表达式应用于大型文件,我想将其应用于文件块的流。
我目前的解决方案就是:
(?<=>)\s+(?=<)
找到打开和关闭HTML标记之间有多个空格的任何地方,例如> <
。我将所有匹配替换为" "
(单个空格)。
我的问题是
(PS:我已将它应用到一个大约500kb的文件。它达到了350kb。使用外部缩小器将它调到340kb。我对150kb的节省感到非常满意,并且不太担心额外的10kb 。)
答案 0 :(得分:1)
这取决于。请考虑此HTML
代码段:
<div>
<p>Some paragraph here</p>
<div data-rel="some data > < here">
<p>some subparagraph here</p>
</div>
</div>
此处,您的表达式也会匹配一些可能重要的数据属性中的> <
(请参阅a demo here) - 这可能会也可能不会破坏您的代码(广告1)。
关于你的第二个问题(广告2.),匹配通常比看起来更快,所以你也可以写:
>\s+<
并将其替换为
><
请参阅reduction in steps与此处的第一个表达式相比较(259对28步,减少约90%)。