请求高手写一个正则表达式

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:14:26
我读取一个html,想用正则表达式获取其中的几个数而已。但是不知道怎么下手。

以下是html主要部分:
=======================
<tr bgcolor="lightblue"> <td><div align="right" class="style9">Cable Modem 状态</div></td> <td colspan="2">registrationComplete</td> </tr>
<tr bgcolor="lightblue"> <td><div align="right" class="style9">Cable Modem 所属回传</div></td> <td colspan="2">Cable5/1/3-upstream1</td> </tr>
<tr bgcolor="lightblue"> <td><div align="right" class="style9">Cable Modem 所属回传信噪比</div></td> <td colspan="2">326</td> </tr>
<tr bgcolor="lightblue"> <td><div align="right" class="style9">Cable Modem 所属回传频率</div></td> <td colspan="2">5700

这个正则式可以满足你的要求:

(?s)(?<=Cable\s*Modem\s*状态</div></td>\s*<td\s*colspan="2">)(.*?)(?=<[^>]*)(?:.*)(?:Cable\s*Modem\s*所属回传信噪比</div></td>\s*<td\s*colspan="2">)(.*?)(?=<[^>]*)(?:.*)

其中已经把你需要的状态值和噪声比分好组了 当需要状态值是取group(1),当需要噪声比是取group(2)。

此为正则编写,未考虑到不同语言间差异,请自行略微调整。

试试这个表达式:

1、\s<tr[^>]*>\s+<td><div[^>]*>([^0-9]*[态|比])</div></td>\s+<td[^>]*>(.*)</td>\s+</tr>
2、\1\t\2

((?<=状态.*?<td.*?>).*(?=</td>))|((?<=Cable Modem 所属回传信噪比.*?<td.*?>).*(?=</td>))

试试这个