2010-02-13 41 views
2

我有一個html文件,我需要採取任何標記並將align ='left'放入其中。正則表達式將對齊放入一個​​標記

所以給出的行:

<td><img alt="" src="oooh.html_files/px" style="width: 20px; height: 1px;"/></td> 

我需要做的:

<td align='left'><img alt="" src="oooh.html_files/px" style="width: 20px; height: 1px;"/></td> 

如果已經指定了一個對準我需要它剛剛離開這一點。因此,考慮到行:

<tr><td width="50%">&nbsp;</td><td align="center"> 

我需要做的:

<tr><td width="50%" align='left'>&nbsp;</td><td align="center"> 

注意它把一個對齊到第一個TD,但忽略了第二個,因爲已經指定了一個比對。

這是可能做到這一點Ruby與正則表達式?

我知道它真的不值得使用正則表達式與HTML ..但基本上我只是經過一個快速入門後克服另一個庫中的錯誤。希望這個錯誤很快就會解決,我不需要擔心! :)

回答

4
#!/usr/bin/env ruby 
require 'nokogiri' 

doc = Nokogiri::XML('<tr><td width="50%">&nbsp;</td><td align="center"></tr>') 

(doc/'//td[not(@align)]').each {|td| td['align'] = 'left' } 

puts doc 
# <?xml version="1.0"?> 
# <tr> 
# <td width="50%" align="left"/> 
# <td align="center"/> 
# </tr> 

看,馬!沒有正則表達式!

這是字面上如果你不打擾正則表達式的單線程。

+0

多數民衆贊成真棒!今天我學到了一些東西;)我今晚應該睡得很好! – 2010-02-13 12:47:48

+0

我喜歡他們在主頁上說的話:「XML就像暴力 - 如果它不能解決你的問題,那麼你的用處不夠。」 – 2010-02-13 13:06:19

2

經常給出的答案:正則表達式不能解析HTML;使用一個HTML解析庫,其中有很多。

+0

我知道!我說在這個問題上,事情就是它早上五點左右,我不是經過長期解決之後,我只是想快速破解一些小問題,這樣我就可以找到一些工作,所以我可以去睡覺了帶着一絲美好的感覺看到美麗的東西! – 2010-02-13 04:43:55