使用正则表达式将多个标记组合为一个标记


Combining Multiple Tags into a single tag with a regex

我知道我不应该用正则表达式解析HTML,但我无法控制源HTML。

我有一个单行html,由许多代表像素的<i>标签组成。

<i></i><i></i><i></i><i></i><i></i><i class=cfefefe></i>

我的问题是找到计数和更换标签

如何构造正则表达式来查找和计数没有类<i></i> 的标签

理想情况下,我想要一个数组来显示连接空<i>标签的计数:

Array
(
    [0] => 5      //<i></i><i></i><i></i><i></i><i></i>
    [1] => 3      //<i></i><i></i><i></i>
    [2] => 8720   //etc etc
    [3] => 14
    [4] => 320
)

尝试:

var your_line = "<i></i><i></i><i></i><i></i><i></i><i class=cfefefe></i>";
var result_set = your_line.match(/<i><'/i>/g);

示例:

> your_line.match(/<i><'/i>/g)
["<i></i>", "<i></i>", "<i></i>", "<i></i>", "<i></i>"]

将后续<i></i>匹配在一起:

> your_line.match(/(<i><'/i>)+/g)
["<i></i><i></i><i></i><i></i><i></i>"]