抱歉我的英语不好。 我有一个如下文
的文字<title class="a" />
<li name="a1" src="a11" />
<li name="a2" src="a21" />
<li name="a3" src="a31" />
<title class="b" />
<li name="b1" src="b11" />
<li name="b2" src="b21" />
<title class="c" />
<li name="c1" src="c11" />
<li name="c2" src="c21" />
<li name="c3" src="c31" />
<li name="c4" src="c41" />
<li name="c5" src="c51" />
我希望获得所有标题类名称和子li(没有特定的子li计数)名称和src值。
非常感谢。
答案 0 :(得分:0)
抓住头衔和孩子李:
/<title.*?class=(['"])(.*?)\1 \/>(?:\n<li.*(?:name=(["']).*?\3.*|src=(['"]).*\4.*){2})+/g
从中获取li:
/(?:\n<li.*name=(["'])(.*?)\1.*src=(['"])(.*?)\3.*?)/g
请注意,这被视为不良做法,you probably shouldn't parse html with regex
let titleAndListElementsRegex = /<title.*?class=(['"])(.*?)\1 \/>(?:\n<li.*(?:name=(["']).*?\3.*|src=(['"]).*\4.*){2})+/g,
listElementRegex = /(?:\n<li.*name=(["'])(.*?)\1.*src=(['"])(.*?)\3.*?)/g,
page = `<title class="a" />
<li name="a1" src="a11" />
<li name="a2" src="a21" />
<li name="a3" src="a31" />
<title class="b" />
<li name="b1" src="b11" />
<li name="b2" src="b21" />
<title class="c" />
<li name="c1" src="c11" />
<li name="c2" src="c21" />
<li name="c3" src="c31" />
<li name="c4" src="c41" />
<li name="c5" src="c51" />`,
pageJson = {};
do {
titleMatch = titleAndListElementsRegex.exec(page);
if (titleMatch) {
pageJson[titleMatch[2]] = {}
do {
listItemMatch = listElementRegex.exec(titleMatch[0]);
if (listItemMatch) {
pageJson[titleMatch[2]][listItemMatch[2]] = listItemMatch[4]
}
} while (listItemMatch);
}
} while (titleMatch);
console.log(pageJson)