我试图通过检查网页的 HTML 来确定名称“电话”出现在哪一列。我正在搜索的字符串如下所示:
<tr class="C1">
<td>Name</td>
<td>Address</td>
...
... < some more columns, but their number is not fixed >
...
<td>Phone</td>
...
... <more columns>
...
</tr>
是否可以使用正则表达式来确定?
从理论计算机科学的角度来看:这是不可能的,因为表格可以嵌套;而正则表达式通常无法处理嵌套结构(您需要一个 Typ-2-Grammer (Chomsky-Hierarchy),即 Parser,来分析 html-Text 的结构,它不是 Typ-3,即常规)。
但是,从实际的角度来看,如果您假设表没有嵌套,则可以使用 RegEx 提取表行(类似于<tr (?!</tr>)*</tr>
),然后匹配条目(类似于<td (?!</td>)*</td>
)以生成列列表并搜索该列表对于包含字符串"Phone"
...的条目
艰巨的任务。我指的是各种帖子,这些帖子解释了为什么使用 RegEx 进行 HTML 解析(实际上)是不可能的: