2017-03-28 5 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에 포함 된 간단한 정규 표현식입니다. 이 패턴은 기본적으로 "처음부터 시작해서 모든 것을 물음표까지 잡아라"고 말합니다.

속도면에서 동급입니다. 나는 읽기가 더 쉽기 때문에 아마 첫 번째를 사용할 것입니다.