2012-10-14 8 views
6

का उपयोग कर कई समूहों से मेल खाते हुए आलसी (अविश्वासी) <tag></tag> टैग के जोड़े के बीच किसी भी मूल्य की सामग्री को पकड़ना चाहते हैं।रीजिक्स

<tag> 
This is one block of text 
</tag> 

<tag> 
This is another one 
</tag> 

regex मैं के साथ आए हैं

/<tag>(.*)</tag>/m

हालांकि यह लालची हो गया लगता है और ऊपर बहुत पिछले </tag> तक संलग्न कोष्ठकों के भीतर सब कुछ हासिल कर रहा है है। मैं इसे जितना संभव हो उतना आलसी होना चाहूंगा ताकि हर बार यह एक बंद टैग देख सके, यह एक मैच समूह के रूप में इसका इलाज करेगा और शुरू होगा।

मैं रेगेक्स कैसे लिख सकता हूं ताकि मैं दिए गए परिदृश्य में एकाधिक मिलान प्राप्त कर सकूं?

मैं मैं क्या नीचे दिए गए लिंक में वर्णन कर रहा हूँ

http://rubular.com/r/JW5M3rnqIE

नोट का एक नमूना शामिल किया है: यह XML नहीं है, और न ही यह वास्तव में किसी भी मौजूदा मानक प्रारूप पर आधारित है। मुझे एक पूर्ण पार्सर के साथ आने वाली पूर्ण पुस्तकालय की तरह परिष्कृत कुछ भी नहीं चाहिए।

+1

एक और महत्वपूर्ण बात है कि एक्सएमएल पर regexen का उपयोग करके, [आप Ctulthu साथ खेल रहे हैं] (http://stackoverflow.com/questions:

अनेक गतिविधियां, उपयोग खोजने के लिए/1,732,348)। बाद में, यह मत कहो कि आपको चेतावनी नहीं दी गई है। –

+0

@ बोरीसस्टिटनी, यहां कार्गो पंथ की कोई ज़रूरत नहीं है। Regexes रिकर्सिव नहीं हैं, बस इतना है। – nalply

+2

... हर बार जब आप नियमित अभिव्यक्तियों के साथ एचटीएमएल को पार्स करने का प्रयास करते हैं, तो अपवित्र बच्चा कुंवारी के खून को रोता है, और रूसी हैकर्स ने आपके वेबपैड को पंसद किया है ... रेगुलर एक्सप रेसियन पार्सिंग का गीत मोर की आवाजों को दूर करेगा यहां स्पैम से टैल मैन मैं देख सकता हूं कि आप इसे देख सकते हैं ͎̩͔̋î̩t͎̩͔̋ यह खूबसूरत है कि वह आदमी के झूठों का अंतिम झुकाव है, सब कुछ खो गया है मैं सभी खो गया –

उत्तर

11

regex पैटर्न के साथ जाओ:

/<tag>(.*?)<\/tag>/im 

लेज़ी (गैर लालची) .*?, नहीं .* है।

आप को पता है के लिए
string.scan(/<tag>(.*?)<\/tag>/im) 
+0

http: // www पर भी एक नज़र डालें। नियमित-expressions.info/ruby.html –

+0

धन्यवाद! मैंने regex – MxyL

+0

@Keikoku के लिए रूबी चीजों की कोशिश करने के बारे में नहीं सोचा था - आपका स्वागत है। सौभाग्य! –

संबंधित मुद्दे