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