2011-06-16 14 views
5

का उपयोग करके पाठ से यूआरएल को हटाकर एक पाठ दिया गया, मैं यूआरएल भाग को हटाना चाहता हूं और अन्य टेक्स्ट छोड़ना चाहता हूं।ruby ​​

उदाहरण:

'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...' 

बनने के लिए

'bla bla bla... bla bla bla... bla bla bla...' 

वहाँ किसी भी गहरे लाल रंग का यह कुशलता से करने के लिए विधि में निर्माण है? इस तरह होने के लिए

(?:f|ht)tps?:\/[^\s]+ 
+0

क्या आप गारंटी दे सकते हैं कि यूआरएल के भीतर कोई रिक्त स्थान नहीं होगा? – Locksfree

+0

टेक्स्ट उपयोगकर्ता द्वारा दर्ज किया गया है, इसलिए मेरी मुख्य चिंता केवल कुछ भी है जो अगली जगह तक यूआरएल जैसा दिखता है। 'http://bit.ly/ space के साथ यूआरएल '' अंतरिक्ष के साथ यूआरएल 'बन जाएगा' –

उत्तर

9

regex के साथ प्रयास करें

URI_REGEX = %r"((?:(?:[^ :/?#]+):)(?://(?:[^ /?#]*))(?:[^ ?#]*)(?:\?(?:[^ #]*))?(?:#(?:[^ ]*))?)" 

def remove_uris(text) 
    text.split(URI_REGEX).collect do |s| 
    unless s =~ URI_REGEX 
     s 
    end 
    end.join 
end 

मैं रेल कंसोल में यह परीक्षण और यह उम्मीद के रूप में काम:

remove_uris('bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...') 
=> "bla bla bla... bla bla bla... bla bla bla..." 

यदि किसी के पास बेहतर/प्रभावी समाधान है, तो मैं इसे वोट दूंगा या स्वीकार करूंगा। धन्यवाद।

+2

@ डोंनी कुर्निया कहता है कि आपके पास एक स्ट्रिंग 'स्ट्र' में आपकी स्ट्रिंग है, तो आप @ द मास्क के रेगेक्स का उपयोग कर सकते हैं इस तरह: 'new_str = str.gsub (/ (?: f | ht) tps?: \/[^ \ s] + /, '' ')' या यदि आप 'str' को स्वयं बदलना चाहते हैं तो आप' str 'कर सकते हैं .gsub! (/ (?: एफ | एचटी) टीपीएस?: \/[^ \ s] + /, '') ' –

+0

@ ड्रुवासागर उपर्युक्त उत्तर जहां मेरा असफल रहा। @ inbound_text.gsub! (/ /एम, '')। क्यूं कर? अच्छा उत्तर। – Angela

4

मैं सिर्फ Regular Expression - replace word except within a URL/URI पाया और कोड को संशोधित:

+0

text.gsub के बारे में क्या! (URI_REGEX, '')? – nex

+0

टिप्पणी के लिए धन्यवाद, @nex। मैं इसे आजमाऊंगा। –

+0

कृपया ध्यान दें कि यह 100% काम नहीं करता है। निम्नलिखित पाठ पर विचार करें: '"تفاصيل تغطية \ n # lexusriyadhlargestglobally \ n # لكزس_الرياض_الأكبر_في_العالم \ n تجدونها هنا \ nhttp: //example.com \ n http://example.com" अरबी पाठ और इमोजी के कुछ हिस्सों को छोड़ दिया गया है – mreq