1

I am trying to determine in which column the name "Phone" appears, by checking the HTML of a web page. The string in which I am doing the search looks like this :

<tr class="C1">
<td>Name</td>
<td>Address</td>
...
...   < some more columns, but their number is not fixed >
...
<td>Phone</td>
...
...    <more columns>
...
</tr>

Is it possible to determine using regular expressions ?

4

2 に答える 2

1

理論的なコンピューター サイエンスの観点から: テーブルは入れ子になる可能性があるため、これは不可能です。また、正規表現は通常、ネストされた構造に対応できません (html-Text の構造を分析するには、Typ-2-Grammer (Chomsky-Hierarchy)、つまりパーサーが必要です。Typ-3、つまり正規ではありません)。

ただし、実用的な観点からは、テーブルがネストされていないと仮定すると、RegEx を使用してテーブル行を抽出し (のようなもの<tr (?!</tr>)*</tr>)、後でエントリを照合して ( のようなもの<td (?!</td>)*</td>)、列のリストを生成し、そのリストを検索できます。文字列"Phone"....を含むエントリの場合

于 2012-06-03T10:40:38.040 に答える
1

難しい仕事。RegEx を使用した HTML 解析が (事実上) 不可能である理由を説明するさまざまな投稿を紹介します。

  1. 正規表現は、XHTML 自己完結型タグを除く開始タグに一致します
  2. https://stackoverflow.com/a/590789/290343
  3. https://stackoverflow.com/a/133684/290343
于 2012-06-03T10:42:09.520 に答える