2010-12-03 109 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); 
相關問題