2010-12-03 6 views
0

У меня есть HTML, который выглядит какregex: удалить все, кроме?

<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

если вы должны использовать регулярное выражение, вот демо с помощью 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); 
Смежные вопросы