2010-12-03 112 views
0

我有HTML,看起来像正则表达式:删除所有,但?

<tr> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=Yellow">Yellow</a>&nbsp;</td> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=FFFF00">#FFFF00</a></td> 
<td bgcolor="#FFFF00">&nbsp;</td> 
<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=FFFF00">Shades</a></td> 
<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=FFFF00&colortop=FFFFFF">Mix</a></td> 
</tr> 


<tr> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=YellowGreen">YellowGreen</a>&nbsp;</td> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=9ACD32">#9ACD32</a></td> 
<td bgcolor="#9ACD32">&nbsp;</td> 
<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=9ACD32">Shades</a></td> 
<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=9ACD32&colortop=FFFFFF">Mix</a></td> 
</tr> 

我所想要做的是

过滤器的HTML,所以我只能用

<td bgcolor="#XXXXXX">&nbsp;</td>

最终然后过滤器,所以我最终与整堆的行堆起来

XXXXXX 
XXXXXX 

我该怎么做?

+0

你不会的。这是一个可怕的地方使用任何正则表达式...任何其他的可能性? – Blender 2010-12-03 03:59:17

回答

1

嗨,你可以使用下面的正则表达式。

\<td bgcolor\=\"([^\"]+\)">\&nbsp\;\<\/td\> 

使用组选项捕获 “XXXXXX”

0

一正则表达式匹配正确的标签:

\<td bgcolor="#[0-9A-Fa-f]{6}">&nbsp;\</td\> 

然后,你可以再次筛选数据(或使用一组选项,取决于什么语言,这是为了更方便):

[0-9A-Fa-f]{6} 

,如果你想使用正则表达式,即(不要拍我,问题是,我可以使用什么样的正则表达式这一点)

0

,如果你必须使用正则表达式,这里是一个使用Ruby的IRB演示:

>> %Q{ 
<tr> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=Yellow">Yellow</a>&nbsp;</td> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=FFFF00">#FFFF00</a></td> 
<td bgcolor="#FFFF00">&nbsp;</td> 
<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=FFFF00">Shades</a></td> 
<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=FFFF00&colortop=FFFFFF">Mix</a></td> 
</tr> 


<tr> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=YellowGreen">YellowGreen</a>&nbsp;</td> 
<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=9ACD32">#9ACD32</a></td> 
<td bgcolor="#9ACD32">&nbsp;</td> 
<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=9ACD32">Shades</a></td> 
<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=9ACD32&colortop=FFFFFF">Mix</a></td> 
</tr> 
}.scan(/<td[^>]*>&nbsp;<\/td>/).map {|s| s[/#([a-f0-9]+)/i, 1]} 

=> ["FFFF00", "9ACD32"] 
0

我不会解析与正则表达式的HTML两种,但是,如果我做我不喜欢这样;)

var html = '<tr>\n<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=Yellow">Yellow</a>&nbsp;</td>\n<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=FFFF00">#FFFF00</a></td>\n<td bgcolor="#FFFF00">&nbsp;</td>\n<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=FFFF00">Shades</a></td>\n<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=FFFF00&colortop=FFFFFF">Mix</a></td>\n</tr>\n\n\n<tr>\n<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?color=YellowGreen">YellowGreen</a>&nbsp;</td>\n<td align="left"><a target="_blank" href="/tags/ref_color_tryit.asp?hex=9ACD32">#9ACD32</a></td>\n<td bgcolor="#9ACD32">&nbsp;</td>\n<td align="left"><a href="/tags/ref_colorpicker.asp?colorhex=9ACD32">Shades</a></td>\n<td align="left"><a href="/tags/ref_colormixer.asp?colorbottom=9ACD32&colortop=FFFFFF">Mix</a></td>\n</tr>' 
     .split('\n'),  
    colors = [], 
    i, l, 
    match; 

for(i = 0, l = html.length; i < l; i++) { 
    if(match = /<td bgcolor="#([\da-fA-F]{6})">&nbsp;<\/td>/.exec(html[i])) { 
     colors.push(match[1]); 
    } 
} 

console.log(colors); 
相关问题