1

我试图通过检查网页的 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>

是否可以使用正则表达式来确定?

4

2 回答 2

1

从理论计算机科学的角度来看:这是不可能的,因为表格可以嵌套;而正则表达式通常无法处理嵌套结构(您需要一个 Typ-2-Grammer (Chomsky-Hierarchy),即 Parser,来分析 html-Text 的结构,它不是 Typ-3,即常规)。

但是,从实际的角度来看,如果您假设表没有嵌套,则可以使用 RegEx 提取表行(类似于<tr (?!</tr>)*</tr>),然后匹配条目(类似于<td (?!</td>)*</td>)以生成列列表并搜索该列表对于包含字符串"Phone"...的条目

于 2012-06-03T10:40:38.040 回答
1

艰巨的任务。我指的是各种帖子,这些帖子解释了为什么使用 RegEx 进行 HTML 解析(实际上)是不可能的:

  1. RegEx 匹配打开的标签,XHTML 自包含标签除外
  2. https://stackoverflow.com/a/590789/290343
  3. https://stackoverflow.com/a/133684/290343
于 2012-06-03T10:42:09.520 回答