이 오래된,하지만 좋은 질문이다.
require 'set'
require 'uri'
text = '@BreakingNews: Typhoon Morakot hits Taiwan, China evacuates thousands http://news.bnonews.com/u4z3'
schemes_regex = /^(?:#{ URI.scheme_list.keys.join('|') })/i
URI.extract(text).each do |url|
text.gsub!(url, '') if (url[schemes_regex])
end
puts text.squeeze(' ')
그리고 IRB 일이 일어나고 그 결과 출력 있는지 보여주는를 통해 패스 :
irb(main):004:0* text = '@BreakingNews: Typhoon Morakot hits Taiwan, China evacuates thousands http://news.bnonews.com/u4z3'
=> "@BreakingNews: Typhoon Morakot hits Taiwan, China evacuates thousands http://news.bnonews.com/u4z3"
: 나는 검색 할 텍스트를 정의
여기에 루비의 내장에있는 URI에 의존 답변입니다 나는 우리가 반응하고자하는 URI 스킴의 정규식을 정의했다. 이는 URI가 검색 단계에서 거짓 긍정을 반환하기 때문에 방어적인 조치입니다.
irb(main):006:0* schemes_regex = /^(?:#{ URI.scheme_list.keys.join('|') })/i
=> /^(?:FTP|HTTP|HTTPS|LDAP|LDAPS|MAILTO)/i
URI가 텍스트 찾기 URL을 걷게하십시오. 우리가 텍스트에서 모든 항목을 제거에 반응하고자하는 계획의 경우, 발견 각각에 대해 :
irb(main):008:0* URI.extract(text).each do |url|
irb(main):009:1* text.gsub!(url, '') if (url[schemes_regex])
irb(main):010:1> end
이 발견 된 URL을 URI.extract
입니다. 그것은 후행 :
때문에 실수로 BreakingNews:
을보고합니다. 나는 너무 정교한 아니라 생각하지만, 정상적인 사용에 대한 괜찮아 : 결과 텍스트가 무엇인지
=> ["BreakingNews:", "http://news.bnonews.com/u4z3"]
쇼 :
irb(main):012:0* puts text.squeeze(' ')
@BreakingNews: Typhoon Morakot hits Taiwan, China evacuates thousands
당신이 모든 질문을 읽어 표시되지 않습니다. – hobodave
@hobodave : 다시 시도했는데 이번에는 지난 번 질문에 대한 오해가있었습니다. 나는 나쁜 영어가 관련되어 있다고 생각했고 그는 그 링크에서 텍스트를 얻고 싶다. 그 일에 대해 미안합니다. 그럼 아주 간단한 문제. –
hpricot은 더 이상 권장되지 않습니다. 나는 사실상의 표준이고 지원의 hpricot의 단서 인 Nokogiri를 사용하도록 제안 할 것이다. –