我想使用正则表达式来匹配以下html表:
<tbody class=\"DocTableBody \">
<tr data-fastRow=\"1\" class=\"DataRow TDRE\">
<td id=\"g-f-1\" class=\"TDC FieldDisabled Field TCLeft CellText g-f\" >
<div class=\"DTC\">
<label id=\"c_g-f-1\" class=\"DCC\" >01-Apr-2015</label>
</div>
</td>
<td id=\"g-g-1\" class=\"TDC FieldDisabled Field TCLeft CellTextHtml g-g\" >
<div class=\"DTC\">
<label id=\"c_g-g-1\" class=\"DCC\" >ACTIVE</label>
</div>
</td>
</tr>
<tr data-fastRow=\"2\" class=\"DataRow TDRO\">
<td id=\"g-f-2\" class=\"TDC FieldDisabled Field TCLeft CellText g-f\" >
<div class=\"DTC\">
<label id=\"c_g-f-2\" class=\"DCC\" >01-Apr-2015</label>
</div>
</td>
<td id=\"g-g-2\" class=\"TDC FieldDisabled Field TCLeft CellTextHtml g-g\" >
<div class=\"DTC\">
<label id=\"c_g-g-2\" class=\"DCC\" >ACTIVE</label>
</div>
</td>
</tr>
</tbody>
我希望提取以下值:
"1"
01-Apr-2015
ACTIVE
"2"
01-Apr-2015
ACTIVE
我尝试了以下内容来提取data-fastRow
中的值:
(?sUi)<tr data-fastRow=\\"(\d+)\\".+>.*<\/tr>
但是我无法在单个正则表达式中提取<label.+>(.*)</label>
中的嵌套项。
是否可以在单个正则表达式中提取父项和嵌套项?
答案 0 :(得分:0)
用正则表达式解析HTML是一个非常糟糕的主意。 每个语言都有自己的库来解析HTML。 例如,在Python中,您有BeautifulSoup。
使用这样的库要好得多。
通常,这些库具有类似jQuery-Selector的界面(或类似的东西),它允许您通过非常简单的查询来查找数据。