2017-03-28 13 views
0

このコードを使用して、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 

これは私が解析してるサンプルコードです:

<a href="mailto:[email protected]?subject=My Business Is Dying"> 

をしかし、私はちょうど電子メールアドレス以上のものを取得しています。私は私の結果でこれを得ています:

[email protected]?subject=My Business Is Dying 

疑問符の後ろのすべてを削除するにはどうすれば電子メールアドレスですか?

+0

'in.rb'はHTMLファイルですか? – tadman

答えて

1

あなたはいつも?文字の後に何を切り落とすことができます:私はおそらく以下の二つのうちの一つを使用したい

addresses.map! do |address| 
    address.sub(/\?.*/, '') 
end 
+0

は完全に機能しました。Thx – MMark

0

str = '[email protected]?subject=My Business Is Dying' 

str.split('?').first # => "[email protected]" 
str[/^[^?]+/] # => "[email protected]" 

目はString's [] (slice) methodに埋め込まれた単純な正規表現です。パターンは基本的に「最初から始めて、疑問符まですべてをつかむ」と言っています。

スピードが出る限り同等です。私はおそらく読むのが簡単なので、最初のものを使用します。

関連する問題