regex - Javascript Regular Expression .*? -


मेरे पास निम्न नियमित अभिव्यक्तियाँ हैं:

  var regEx = / ^ \ w * ( ।? *) \ डब्ल्यू * $ /; Var regEx2 = /^\W*(.*)\W*$/;   
  1. (। *?) वास्तव में क्या मतलब है? (। *?) और (। *) ?
  2. में regEx.exec ("abc") क्यों अंतर है < / Code> रिटर्न ['abc', 'abc'] जावास्क्रिप्ट में?
  3. क्यों regEx2.exec ("abc") रिटर्न ['एबीसी', 'एबीसी'] जावास्क्रिप्ट में?

    1. क्वांटिफायर * , + , {n, m} , आदि के बाद ? जोड़ना अनिच्छा / आलसी मिलान बनाता है, जो कि डिफ़ॉल्ट लालची मिलान के विपरीत है। यह नाम से काफी सहज है लालची का मतलब है कि यह जितना संभव हो उतना मैच का प्रयास करेगा। आलसी का मतलब है कि यह जितना संभव हो उतना मैच करने का प्रयास करेगा।

    2. कोई भी गैर-शब्द \ w टोकन नहीं है, इसलिए \ w * खाली स्ट्रिंग से मेल खाता है तब (। *?) जितना संभव हो उतना मैच होगा, लेकिन यह जांचता है कि क्या \ W * कुछ से मिलान कर सकता है या नहीं। तो (। *?) मैच होगा और कैप्चर "abc" , और \ w * (गैर-शब्द ) अंतरिक्ष से मेल खाएगा।

    3. लगभग ऊपर के जैसा ही है, लेकिन (। *) जितना संभव हो उतना खाएगा और इससे मेल खाएगा और < कैप्चर "abc" , और \ w * खाली स्ट्रिंग के साथ छोड़ा जाएगा, जो इसे मेल खाता है।

      2 और 3 के लिए, रिटर्न सरणी का दूसरा तत्व रीजेक्स में पहले कैप्चरिंग समूह द्वारा कैप्चर किया गया पाठ है। सरणी में पहला तत्व वह टेक्स्ट होता है जो संपूर्ण रीगेक्स से मेल खाता है।

Comments