如何在抓取html页面时使用Regex提取“Areal”和“93m²”?
<tr><td>Areal</td><td>93 m²</td></tr>
请注意,本文档中有多个<tr> with <td>
,但是应该只有一个匹配的“Areal”,“Rooms”等。
答案 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²
)
)