正则表达式,用于查找字符串存在于哪一列

时间:2012-06-03 10:33:17

标签: regex pcre

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

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

2 个答案:

答案 0 :(得分:1)

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

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

的条目的列表

答案 1 :(得分:1)

艰巨的任务。我在向您介绍各种帖子,这些帖子解释了为什么使用RegEx进行HTML解析(实际上)无法解决的问题:

  1. RegEx match open tags except XHTML self-contained tags
  2. https://stackoverflow.com/a/590789/290343
  3. https://stackoverflow.com/a/133684/290343