Javascript 使用正则表达式从表中提取块,然后提取行数组
我正试图用javascript中的正则表达式从网站上获取一些信息。目前,我有两种不同的匹配模式。第一个提取一个表Javascript 使用正则表达式从表中提取块,然后提取行数组,javascript,regex,Javascript,Regex,我正试图用javascript中的正则表达式从网站上获取一些信息。目前,我有两种不同的匹配模式。第一个提取一个表 /(?:<tbody>)(.*?)(?:<\/tbody>)/ 第二个将返回的内容拆分为行 /(?:<tr>)(.*?)(?:<\/tr>)/g 。。。现在我想知道我是否可以一步到位,就像现在这样。我希望它是 (?:<tbody>)((?:<tr>)(.*?)(?:<\/tr>))(?:<\
/(?:<tbody>)(.*?)(?:<\/tbody>)/
第二个将返回的内容拆分为行
/(?:<tr>)(.*?)(?:<\/tr>)/g
。。。现在我想知道我是否可以一步到位,就像现在这样。我希望它是
(?:<tbody>)((?:<tr>)(.*?)(?:<\/tr>))(?:<\/tbody>)/g
但是没有快乐。当然,我可以使用.split方法,但这不适合我更广泛的过程-我有一个正则表达式数组,用于提取我需要的信息
非常感谢您的帮助。您可以使用单个正则表达式:/| |.*.*g来完成此操作
这是:
然后数组的第一个元素是,最后一个元素是,任何其他元素都是表中的一行,如下所示:
> ["<tbody>", line1, line2, line3, ..., line n, "</tbody>"]
因此,您可以执行此操作以仅获取以下行:
例如,使用jQuery解析包含HTML的字符串:
var html = '<table><tbody><tr><td>row 1</td></tr><tr><td>row 2</td></tr></tbody></table>';
var dom = $.parseHTML(html);
var rows = $(dom).find('tr');
console.log(rows);
如果要以字符串形式访问HTML,可以使用.outerHTML,例如:
$.each(rows, function (i, el) {
console.log(el.outerHTML);
});
输出:
Object[tr, tr]
<tr><td>row 1</td></tr>
<tr><td>row 2</td></tr>
您也可以使用DOM操纵器。您不应该尝试使用正则表达式解析html。有关详细信息,请参见此处:
$.each(rows, function (i, el) {
console.log(el.outerHTML);
});
<tr><td>row 1</td></tr>
<tr><td>row 2</td></tr>