我使用此代码列出HTML页面中的电子邮件地址。
require 'nokogiri'
selector = "//a[starts-with(@href, \"mailto:\")]/@href"
doc = Nokogiri::HTML.parse File.read 'in.rb'
nodes = doc.xpath selector
addresses = nodes.collect {|n| n.value[7..-1]}
puts addresses
这是示例代码I解析:
<a href="mailto:joe@example.com?subject=My Business Is Dying">
但我获得的不仅仅是电子邮件地址。我在结果中得到了这个:
joe@example.com?subject=My Business Is Dying
如何在问号后删除所有内容,以便它只是电子邮件地址?
答案 0 :(得分:1)
您可以随时切断?
字符后的任何内容:
addresses.map! do |address|
address.sub(/\?.*/, '')
end
答案 1 :(得分:0)
我可能会使用以下两种中的一种:
str = 'joe@example.com?subject=My Business Is Dying'
str.split('?').first # => "joe@example.com"
str[/^[^?]+/] # => "joe@example.com"
第二个是String's []
(slice) method中嵌入的简单正则表达式。该模式基本上是“从一开始就抓住所有东西直到问号”。
就速度而言,它们是等价的。我可能会使用第一个,因为它更容易阅读。