2012-10-01 5 views
16

मैं पहले से ही समझता हूं कि .* का मतलब किसी भी चरित्र का शून्य या अधिक है, लेकिन क्या कोई बता सकता है कि .* निम्नलिखित कार्य में और यह क्या मिलान करेगा?कैसे। * (डॉट स्टार) काम करता है?

.*([a-m/]*).* 

.*([a-m/]+).* 

.*?([a-m/]*).* 
+1

रेगेक्स में, '.' किसी भी चरित्र को संदर्भित करता है, चाहे वह संख्या हो, एक एपलबेट चरित्र, या कोई अन्य विशेष चरित्र। '*' का अर्थ शून्य या अधिक बार है। – asgs

+2

यह काफी आसान है - कोई भी प्रतीक, शून्य या अधिक बार मौजूद है - लेकिन उसके नीचे एक * टन * बारीकियां हैं। और भी, यह नियमित अभिव्यक्तियों में एक अत्यंत केंद्रीय अवधारणा है। अभी बाहर जाएं और नियमित अभिव्यक्तियों पर बैकग्राउंडर पढ़ें। आप आगे, तेजी से, इस तरह से मिल जाएगा। –

उत्तर

6

प्रत्येक मामला अलग होता है:

.*([a-m/]*).*

पहले .* शायद, पूरी स्ट्रिंग से मेल खाएगा, क्योंकि [a-m/] उपस्थित होने की आवश्यकता नहीं है, और पहली * लालची है और पहले आता है।

.*([a-m/]+).*

पहले .* अंतिम वर्ण है कि केवल एक आवश्यकता है के बाद से [a-m/] से मेल खाता है अप करने के लिए पूरी स्ट्रिंग से मेल खाएगा, और पहली * लालची है और पहले आता है।

.*?([a-m/]*).*

पहले .*?, सबसे पहले चरित्र है कि [a-m/] से मेल खाता है अप करने के लिए स्ट्रिंग से मेल खाएगा, क्योंकि *? लालची नहीं है, तो [a-m/]+, सभी यह कर सकते हैं की भरपाई कर देंगे क्योंकि + पिछले लालची है, और उसके बाद .* शेष स्ट्रिंग से मेल खाएगा।

+0

अच्छी तरह से किया गया! +1 – XIVSolutions

10

डॉट कुछ भी यहां जा सकते हैं इसका मतलब है और स्टार कम से कम 0 बार तो .* कोई रिक्त स्ट्रिंग सहित वर्णों के किसी अनुक्रम, स्वीकार करता है मतलब है।

+2

आपने यह कैसे किया? आपने 'असली सवाल नहीं' का उत्तर दिया। –

+0

@Thereisnothingwecando: "एक वास्तविक सवाल के रूप में बंद ... अक्टूबर 2 '12 9:38 पर"। Ionut eariler का जवाब दिया, (जब यह अभी भी एक असली सवाल था :))। –

4

। * का अर्थ है "किसी भी चरित्र, दोहराव की संख्या।"

8

आपके उदाहरणों में * * का कार्य यह सुनिश्चित करना है कि युक्त अभिव्यक्ति को कुछ भी (या कुछ भी नहीं) से घिराया जा सके। डॉट एक मनमाना चरित्र का प्रतिनिधित्व करता है, और तारांकन का कहना है कि पहले चरित्र को मनमाने ढंग से कई बार दोहराया जा सकता है (या बिल्कुल नहीं)।

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