Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式从表中提取块,然后提取行数组_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式从表中提取块,然后提取行数组

Javascript 使用正则表达式从表中提取块,然后提取行数组,javascript,regex,Javascript,Regex,我正试图用javascript中的正则表达式从网站上获取一些信息。目前,我有两种不同的匹配模式。第一个提取一个表 /(?:<tbody>)(.*?)(?:<\/tbody>)/ 第二个将返回的内容拆分为行 /(?:<tr>)(.*?)(?:<\/tr>)/g 。。。现在我想知道我是否可以一步到位,就像现在这样。我希望它是 (?:<tbody>)((?:<tr>)(.*?)(?:<\/tr>))(?:<\

我正试图用javascript中的正则表达式从网站上获取一些信息。目前,我有两种不同的匹配模式。第一个提取一个表

/(?:<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>