代码之家  ›  专栏  ›  技术社区  ›  Mongus Pong

将对齐方式放入<td>标记的正则表达式

  •  2
  • Mongus Pong  · 技术社区  · 16 年前

    我有一个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中使用正则表达式是不值得的。但基本上,我只是在经历一次快速的黑客攻击,以克服另一个库中的错误。希望这个bug很快就能修复,我不必担心!:)

    2 回复  |  直到 12 年前
        1
  •  4
  •   Jörg W Mittag    16 年前
    #!/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>
    

    看,妈!没有ReXEP!

    它是 字面 一个一行程序,如果你不需要regexp的话。

        2
  •  2
  •   martinwguy    16 年前

    经常给出的答案是:正则表达式不能解析HTML;使用一个HTML解析库,其中有很多。