正则表达式找不到匹配

时间:2013-03-31 16:10:28

标签: regex

我试图在这里提取一些信息是我的正则表达式

<tr>
<td>([^<]+)<i><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/i><sup id="([^<]+)" class="([^<]+)"><a href="([^<]+)"><span>[<\/span>1<span>]<\/span><\/a><\/sup><\/td>
<td><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/td>
<td><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/td>
<td>([^<]+)<\/td>
<td>([^<]+)<\/td>
</tr>

这里是示例html

<tr>
<td><i><a href="/wiki/3Xtreme" title="3Xtreme">3Xtreme</a></i><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span>[</span>18<span>]</span></a></sup></td>
<td><a href="/wiki/989_Studios" title="989 Studios">989 Studios</a></td>
<td><a href="/wiki/989_Studios" title="989 Studios">989 Studios</a></td>
<td>1999-03-31<sup>NA</sup></td>
<td>NA</td>
</tr>

截至目前,我只想获取数据以查找匹配项。你能看出为什么它不符合这个原因吗?

所有仇敌...... 如果我应该在html上使用正则表达式,我不关心你的选择..对于这种情况,它将工作得很好。我有一个页面,我需要的数据在一个表中。一旦我可以获得数据,我将其保存到我的数据库,永远不必再使用正则表达式..如果你的评论或答案是关于你使用正则表达式与HTML的选项,请不要发帖..

2 个答案:

答案 0 :(得分:1)

......第二行:

<td>([^<]+)<i>

无法匹敌:

<td><i>
当你在标签之间没有任何内容时,将'+'等效于'{1,}'。没有检查你的正则表达式的其余部分,但无论如何它不能工作。

修改
还请更正"([^<]+)"等等(我希望你明白为什么)...并在你纠正它时编辑你的正则表达式。

编辑2:
看到这是一场灾难(对不起,但这是事实:/):请考虑用简单的(.*?)

编辑3:
[和]必须逃脱。 (\ d将帮助你抓住数字)

答案 1 :(得分:1)

<span>[<\/span>1<span>]<\/span>

这里有很多问题:你必须逃避括号,显然1将不匹配18