你太难了。使用Nokogiri,您可以轻松地解析和搜索 HTML 和/或 XML。
要获取<title>
文本,只需使用 Nokogiri 的HTML::Document#title
方法:
require 'nokogiri'
doc = Nokogiri::HTML('<HTML> <HEAD> <TITLE>TestExample [Date]</TITLE></HEAD> </HTML>')
doc.title # => "TestExample [Date]"
无需编写或维护正则表达式,只要 HTML 合理有效,这将起作用。
由于您正在尝试获取看起来像日期模板的内容,因此您可能需要重写该字符串,Nokogiri 也可以轻松使用title =
:
require 'date'
require 'nokogiri'
doc = Nokogiri::HTML('<HTML> <HEAD> <TITLE>TestExample [Date]</TITLE></HEAD> </HTML>')
title = doc.title
title['[Date]'] = Date.today.to_s
doc.title = title
puts doc.to_html
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html> <head>
# >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>TestExample 2020-03-18</title>
# >> </head> </html>