编辑Nokogiri元素中的文本或使用正则表达式

Ten*_*ack 2 ruby regex nokogiri

有没有办法编辑nokogiri元素的文本?我有一个包含list元素(<li>)的nokogiri元素,我想在保留<li>html的同时从文本中删除一些字符.具体来说,我想删除文本中的前导":"字符(如果存在).它看起来不像nokogiri元素的text =方法,但我只是想确定.

也许我将不得不使用正则表达式?如果是这样,如果它看起来如下,我将如何删除前导":":

<li>: blah blah blah</li>
Run Code Online (Sandbox Code Playgroud)

ps我正在使用红宝石.

Way*_*rad 5

#!/usr/bin/ruby1.8

require 'rubygems'
require 'nokogiri'

html = <<EOS
  <ul>
    <li>: blah blah blah</li>
    <li>: foo bar baz</li>
  </ul>
EOS

doc = Nokogiri::HTML.parse(html)
for li in doc.xpath('//li/text()')
  li.content = li.content.gsub(/^: */, '')
end
puts doc.to_html

# => <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# => <html><body><ul>
# => <li>blah blah blah</li>
# =>     <li>foo bar baz</li>
# =>   </ul></body></html>
Run Code Online (Sandbox Code Playgroud)