我试图使用python在html文件中提取一些网址。这是文本的样子:
preabc!precde<preefg<
我想提取&#34; cde&#34;和&#34; efg&#34;。我使用的模式:
pre(.*?)<
pre(.(?!^pre)).*?<
然而,它们都不起作用:(。请注意,&#34; cde&#34;以及&#34; efg&#34;的实际长度是未知的。我对正则表达不熟悉所以请说明你的答案。非常感谢。
编辑:
对不起我的错误解释和含糊不清的例子。我想提取诸如&#34; GIRL FRIENDS&#34;等标题。 具有特定日期(在本案例中为2014-7-31):
<a href="http://rs.xidian.edu.cn/forum.php?mod=viewthread&tid=662128&extra=page%3D1" onclick="atarget(this)" class="s xst">GIRL FRIENDS</a>
<span class="tps"> ...<a href="http://rs.xidian.edu.cn/forum.php?mod=viewthread&tid=662128&extra=page%3D1&page=2">2</a></span>
<a href="http://rs.xidian.edu.cn/forum.php?mod=redirect&tid=662128&goto=lastpost#lastpost" class="xi1">New</a>
</th>
<td class="by">
<cite>
<a href="http://rs.xidian.edu.cn/home.php?mod=space&uid=265770" c="1">机器人</a></cite>
<em><span><span title="2014-7-31">昨天 23:55</span></span></em>
</td>
答案 0 :(得分:2)
您可以尝试:
(>([A-Z ]+?)<|title="([\d-]+))
你得到的更具体和更不可预测,正则表达式将变得越复杂和难以理解。我不建议使用正则表达式,而是尝试使用HTML解析器。
答案 1 :(得分:1)
我认为最好的答案是不要尝试使用正则表达式解析HTML。有很多html解析库可用。使用正则表达式只会引起麻烦。
答案 2 :(得分:0)
这应该可以解决问题:
pre.*!pre(.*)<pre(.*)<
说明:
pre.*!
忽略第一部分&#39; abc&#39;因为它开始:从pre
开始,任意长度的任意字符体(.*
部分满足任何东西)以!
pre(.*)<
接受cde。与上面相同,但它存储匹配组1中正文中的内容,()
是匹配的组。
pre(.*)<
接受efg。与上述相同,但存储在匹配组2中
请注意,!
和<
都是负责划分字符串的人。