मैं नोकोगिरी का बड़ा प्रशंसक हूं, लेकिन पहिया को फिर से क्यों शुरू कर रहा हूं?
URI::extract(str[, schemes][,&blk])
डॉक्स से:: एक स्ट्रिंग से
अर्क यूआरआई
रूबी के URI मॉड्यूल पहले से ही यह करने के लिए extract
विधि है। यदि ब्लॉक दिया गया है, तो सभी मिलान किए गए यूआरआई के माध्यम से पुनरावृत्त होता है। यदि ब्लॉक दिया गया है या मैचों के साथ सरणी है तो शून्य वापस आता है।
require "uri"
URI.extract("text here http://foo.example.org/bla and here mailto:[email protected] and here also.")
# => ["http://foo.example.com/bla", "mailto:[email protected]"]
आप Nokogiri का उपयोग डोम चलने के लिए और सभी टैग है कि यूआरएल खींच, या यह सिर्फ पाठ निकालते हैं और यह URI.extract
के पास है, या बस URI.extract
यह सब करते हैं सकता है।
और, रेगेक्स पैटर्न के बजाय, नोकोगिरी जैसे पार्सर का उपयोग क्यों करें?चूंकि HTML, और XML को कई अलग-अलग तरीकों से स्वरूपित किया जा सकता है और फिर भी पृष्ठ पर सही ढंग से प्रस्तुत किया जा सकता है या डेटा को प्रभावी ढंग से स्थानांतरित कर सकता है। जब खराब मार्कअप स्वीकार करने की बात आती है तो ब्राउजर बहुत क्षमा कर रहे हैं। दूसरी तरफ, रेगेक्स पैटर्न, "स्वीकार्यता" की बहुत सीमित श्रेणियों में काम करते हैं, जहां उस श्रेणी को परिभाषित किया जाता है कि आप मार्कअप में विविधता की अपेक्षा करते हैं या इसके विपरीत, आप कितनी अच्छी तरह से अनुमान लगा सकते हैं कि आपका पैटर्न गलत कैसे हो सकता है अप्रत्याशित पैटर्न के साथ प्रस्तुत किया।
एक पार्सर रेगेक्स की तरह काम नहीं करता है। यह दस्तावेज़ का आंतरिक प्रतिनिधित्व बनाता है और उसके बाद चलता है। यह परवाह नहीं करता कि फ़ाइल/मार्कअप कैसे निर्धारित किया जाता है, यह डीओएम के आंतरिक प्रतिनिधित्व पर अपना काम करता है। नोकोगिरी एचटीएमएल को संभालने के लिए अपने पार्सिंग को आराम देता है, क्योंकि एचटीएमएल खराब लिखे जाने के लिए कुख्यात है। इससे हमें मदद मिलती है क्योंकि अधिकांश गैर-मान्य एचटीएमएल नोकोगिरी इसे ठीक कर सकते हैं। कभी-कभी मुझे कुछ ऐसा सामना करना पड़ेगा जो इतनी बुरी तरह लिखा गया है कि नोकोगिरी इसे ठीक से ठीक नहीं कर सकता है, इसलिए मुझे इसे नोकोगिरी में जाने से पहले एचटीएमएल को ट्वीक करके इसे मामूली झुका देना होगा; पैटर्न का उपयोग करने की कोशिश करने के बजाय, मैं अभी भी पार्सर का उपयोग करूंगा।
स्रोत
2011-07-16 00:13:48
कृपया नियमित अभिव्यक्तियों के साथ HTML को पार्स करने का प्रयास न करें, एक HTML पार्सर आपको बेहतर सेवा प्रदान करेगा। –
@ एमयू क्या आप मुझे समझा सकते हैं क्यों? –
क्योंकि एचटीएमएल पार्सिंग आपके मुकाबले अधिक जटिल है, शायद आपको लगता है कि वहां बहुत सारे टूटी हुई एचटीएमएल हैं जो साधारण नियमित अभिव्यक्तियों को संभाल नहीं पाएंगे: http://stackoverflow.com/questions/4231382/regular-expression-pattern- मेल-इन-स्ट्रिंग/4234491 # 4234491 –