से यूआरएल निकालने के लिए कैसे रूबी में एक सादे पाठ फ़ाइल से मैं सभी यूआरएल निकालें?टेक्स्ट
मैंने कुछ पुस्तकालयों की कोशिश की लेकिन वे कुछ मामलों में विफल हो गए। सबसे अच्छा तरीका क्या है?
से यूआरएल निकालने के लिए कैसे रूबी में एक सादे पाठ फ़ाइल से मैं सभी यूआरएल निकालें?टेक्स्ट
मैंने कुछ पुस्तकालयों की कोशिश की लेकिन वे कुछ मामलों में विफल हो गए। सबसे अच्छा तरीका क्या है?
कौन से मामले असफल हो रहे हैं?
पुस्तकालय regexpert के अनुसार, आप
regexp = /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix
उपयोग कर सकते हैं और फिर पाठ पर एक scan
प्रदर्शन करते हैं।
संपादित करें: ऐसा लगता है कि regexp खाली स्ट्रिंग का समर्थन करता है। बस प्रारंभिक (^$)
को हटा दें और आप तो क्या पहले से ही रूबी में आप के लिए प्रदान की जाती है का उपयोग कर की तरह
दिलचस्प है कि यह रेगेक्स विफल रहता है जब URL एक आईपी पता – NullUserException
हाँ है। मैंने वास्तव में आपके जवाब पर मतदान किया और "अपनी आवश्यकताओं के अनुसार इसे समायोजित करें"। जब उपयोगकर्ता @ पासवर्ड, या https के अलावा अन्य का उपयोग करते हैं, या किसी अन्य अजीब स्थिति में यह विफल रहता है। आरंभ करने के लिए आप शायद http://tools.ietf.org/html/rfc3986 पढ़ना नहीं चाहेंगे -_- – Chubas
यह उपरोक्त के रूप में विफल रहता है। मैं यहां पूछ रहा हूं कि मैं "आपकी आवश्यकताओं के अनुसार इसे समायोजित करने में असमर्थ हूं"। – tapioco123
आप regex का उपयोग कर सकते हैं और .scan()
string.scan(/(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?)/)
आपको लगता है कि regex के साथ शुरू कर सकते हैं और इसे समायोजित अपनी आवश्यकताओं के अनुसार।
काम हो गया:
require "uri"
URI.extract("text here http://foo.example.org/bla and here mailto:[email protected] and here also.")
# => ["http://foo.example.org/bla", "mailto:[email protected]"]
और अधिक पढ़ें: http://railsapi.com/doc/ruby-v1.8/classes/URI.html#M004495
यह ":" http: //blog.apptamers के साथ पाठ पर विफल रहता है।कॉम/पोस्ट/48613650042/यूरी-एक्स्ट्रैक्ट-ग़लत-इन-रूबी -1-9-3 –
'URI.extract (yourString,/http (s)? | mailto /)' – titibouboul
स्कीमा के बिना यूआरएल निकालने के लिए वैसे भी है? www.example.com –
मैं का उपयोग किया है twitter-text मणि
require "twitter-text"
class UrlParser
include Twitter::Extractor
end
urls = UrlParser.new.extract_urls("http://stackoverflow.com")
puts urls.inspect
require 'uri'
foo = #<URI::HTTP:0x007f91c76ebad0 URL:http://foobar/00u0u_gKHnmtWe0Jk_600x450.jpg>
foo.to_s
=> "http://foobar/00u0u_gKHnmtWe0Jk_600x450.jpg"
संपादित करें: स्पष्टीकरण
जिन लोगों को जेएसओएन प्रतिक्रियाओं के माध्यम से यूआरआई को पार्स करने या नोकोगिरी या मैकेनाइजेशन जैसे स्क्रैपिंग टूल का उपयोग करके समस्याएं आ रही हैं, यह समाधान मेरे लिए काम करता है।
अपने इनपुट इस के समान दिखाई देता है:
"http://i.imgur.com/c31IkbM.gifv;http://i.imgur.com/c31IkbM.gifvhttp://i.imgur.com/c31IkbM.gifv"
यानी यूआरएल जरूरी उनके आसपास सफेद स्थान, किसी भी सीमांकक द्वारा सीमांकित किया जा सकता है, या बिल्कुल भी उनके बीच कोई सीमांकक है की जरूरत नहीं है, तो आप उपयोग कर सकते हैं निम्नलिखित दृष्टिकोण:
def process_images(raw_input)
return [] if raw_input.nil?
urls = raw_input.split('http')
urls.shift
urls.map { |url| "http#{url}".strip.split(/[\s\,\;]/)[0] }
end
उम्मीद है कि यह मदद करता है!
आपने कौन सी पुस्तकालयों की कोशिश की है, और वे किस तरह से विफल रहे हैं? – Zaz
इस तरह के एक प्रश्न पूछते समय, हम समस्या को हल करने के आपके प्रयास को देखने की उम्मीद करते हैं। हम आपके कोड को ठीक करने में मदद करने में प्रसन्न हैं, लेकिन हमें आपके लिए कोड लिखने के लिए कह रहे हैं ऑफ-विषय है। कृपया "[पूछें]" और "[mcve]" पढ़ें। –