2013-01-17 16 views
19

क्या रेगेक्स में (\w+)? और (\w*) के बीच कोई अंतर है?रेगेक्स अंतर: ( w +)? और ( w *)

ऐसा लगता है, है ना?

+0

यह वही प्रतीत होता है, को छोड़कर:

जावास्क्रिप्ट में, उदाहरण के लिए,

/(\w*)/.exec("") // ["", ""] /(\w+)?/.exec("") // ["", undefined] 

PHP में (preg_match), पूर्व मामले में, संबंधित कुंजी बस मैचों सरणी में अनुपस्थित है यदि आप 'बनाम '' null' –

+2

'(\ w +)' की परवाह करते हैं, तो अजीब लगता है। आपने उसे कहां देखा? बाहरी संसाधन के लिए कोई लिंक कृपया? –

+0

मैंने अपनी कंपनी प्रोजेक्ट –

उत्तर

27

(\w+)? और (\w*) दोनों एक ही (0 .. + inf शब्द अक्षर) से मेल खाते हैं

हालांकि, वहाँ एक मामूली अंतर है:

पहले मामले में, अगर regex के इस हिस्से से मेल खाता है "", कैप्चरिंग समूह अनुपस्थित है। दूसरे मामले में, यह खाली है। कुछ भाषाओं में, पूर्व null के रूप में प्रकट होता है जबकि उत्तरार्द्ध हमेशा "" होना चाहिए। http://3v4l.org/DB6p3#v430

+0

में '(\ w +)? 'देखा' किस भाषा में ** नतीजे ** या खाली स्ट्रिंग में कैप्चरिंग? – Cozzamara

+0

@ कोज़ज़मारा पहले मामले में, एक खाली मैच _not_ कब्जा कर लिया गया है। –

+1

किस इंजन से? पर्ल और एसईडी ** ** दोनों पैटर्न – Cozzamara

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