使用正则表达式从具有特定单词的html中获取特定行

时间:2013-05-17 10:28:42

标签: c# html regex

我想获取其中包含特定单词/字符串的所有行,并将其存储在数组中 我有一个字符串如下

<tr>
    <td>Total</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>ABC</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>XYZ</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>Total</td>
    <td>7676</td>
    <td>8767</td>
</tr>

我想获取一个字符串为Total且值应该存储在数组中的行

因此输出

    <tr>
        <td>Total</td>
        <td>123</td>
        <td>567</td>
    </tr>

 <tr>
        <td>Total</td>
        <td>7676</td>
        <td>8767</td>
    </tr>

使用字符串“Total”

获取行的正则表达式应该是什么

3 个答案:

答案 0 :(得分:0)

IN JQUERY UR SOLUTION WILL ---&gt;

var tbl = $('#tblId')
var array = [];

$('tr td' ,tbl).each(function(){
    var htmlstring = (this).innerHTML;
    if(htmlstring == 'Total')
    {
        if((this).innerHTML == 'Total') 
        {
            $('td', this.parentNode).each(function(){
                array.push(this);
            });
        }
    }
});
alert(array);

http://jsfiddle.net/gXGj6/13/

答案 1 :(得分:0)

要为每个具有单词“Total”的单元格的行构建数组,您可以使用此正则表达式:

(?<=<tr>\s*<td>Total</td>)(\s*<td>\d+</td>)+(?=\s*</tr>)

这将为您提供以下2场比赛:

<td>123</td>
<td>567</td>

<td>7676</td>
<td>8767</td>

在这些匹配项上,您可以使用此正则表达式进行拆分以获得数组作为回报:

\D+

答案 2 :(得分:0)

使用jQuery的好解决方案:

http://jsfiddle.net/robfarmer/KaGBL/2/

<强> HTML:

Source
<table id="source">
<tr>
    <td>Total</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>ABC</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>XYZ</td>
    <td>123</td>
    <td>567</td>
</tr>
<tr>
    <td>Total</td>
    <td>7676</td>
    <td>8767</td>
</tr>
</table>
Results
<table id="results"></table>

Array Results:
<ul id="arrayResults"/>

<强>的Javascript

   $(document).ready(function() {
    $("#source tr td:contains('Total')").closest("tr").clone().appendTo("#results");

    var cells = [];

    $("#source tr td:contains('Total')").closest("tr")
    .children("td").not(":contains('Total')").each(function(index, element) {
        cells.push($(element).text());
    });

    $(cells).each(function(index, element) {
        $("#arrayResults").append($("<li>").text(element));
    });
});