使用正则表达式查找内部内容

时间:2013-11-25 18:41:21

标签: php html regex

如何在抓取html页面时使用Regex提取“Areal”和“93m²”?

<tr><td>Areal</td><td>93 m²</td></tr>

请注意,本文档中有多个<tr> with <td>,但是应该只有一个匹配的“Areal”,“Rooms”等。

1 个答案:

答案 0 :(得分:1)

你还没有发布你正在使用的语言,所以我只是给出与你的目标文本匹配的正则表达式,而没有任何代码如何使用正则表达式:

(?<=<td>).*?(?=</td>)

这使用了<td>的后视(零宽度断言),</td>的前瞻和非贪婪的匹配(不会将所有输入都映射到这两个断言之间的输入是最后一个</td>


在PHP中:

$html = "<tr><td>Areal</td><td>93 m²</td></tr>";
preg_match_all("/(?<=<td>).*?(?=<\/td>)/", $html, $matches);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => Areal
            [1] => 93 m²
        )

)