2010-12-03 2 views
0

私は私がやりたいと思っています何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>

で終わるHTML

フィルタであり、行の全体が一杯になった

XXXXXX 
XXXXXX 

どうすればいいですか?

+0

あなたはしないでしょう。これは任意の正規表現を使用するための恐ろしい場所です...他の可能性? – Blender

+0

ページングのDr。 bobince? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – harpo

+0

3,983人が同意します:[正規表現でHTMLを解析しないでください](http ://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

答えて

1

こんにちはあなたは、次の正規表現を使用することができます。あなたは正規表現を使用する必要がある場合

0

右のタグと一致するように、まず正規表現:

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

その後、あなたは再びそのデータをフィルタリング(またはグループオプションを使用し、より便利であるととしてどのような言語に依存します)することができます

あなたは正規表現を使用する場合、ある
[0-9A-Fa-f]{6} 

(私を撮影しない、質問は正規表現が、私はこのために使用することができるものである)

0

を "XXXXXX" をキャプチャする

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

使用グループオプション、ここでは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);