正则表达式将对齐放入标记中

时间:2010-02-13 04:28:49

标签: ruby regex

我有一个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中,但忽略第二个td,因为它已经指定了对齐。

这可以用正则表达式做Ruby吗?

我知道它不值得使用带有html的正则表达式..但基本上我只是在快速破解之后克服另一个库中的错误。希望这个错误很快得到修复,我不用担心它! :)

2 个答案:

答案 0 :(得分: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>

看,妈!没有Regexp!

如果你不打扰Regexp,那么字面上是一个单行。

答案 1 :(得分:2)

经常给出答案:正则表达式无法解析HTML;使用HTML解析库,其中有很多。

相关问题