Regular Expressions
Possessive Quantifiers
खोज…
टिप्पणियों
नायब अनुकरणशील मात्रात्मक
बुनियादी मात्रात्मक का उपयोग
पॉजेसिव क्वांटिफायर कई रेगेक्स फ्लेवर में क्वांटिफायर का एक और वर्ग है जो किसी दिए गए टोकन के लिए, प्रभावी रूप से, पीछे जाने की अनुमति देता है। यह प्रदर्शन को बेहतर बनाने में मदद कर सकता है, साथ ही साथ कुछ मामलों में मैचों को रोक सकता है।
निरोधात्मक परिमाणक का वर्ग परिमाण के बाद आलसी या लालची परिमाणक से भिन्न किया जा सकता है, परिमाण के बाद +
जैसा कि नीचे देखा गया है:
परिमाणक | लालची | आलसी | मालिकाना |
---|---|---|---|
शून्य या अधिक | * | *? | *+ |
एक या अधिक | + | +? | ++ |
शून्य या एक | ? | ?? | ?+ |
उदाहरण के लिए, दो पैटर्न ".*"
और ".*+"
पर विचार करें, स्ट्रिंग "abc"d
। दोनों मामलों में, "
स्ट्रिंग की शुरुआत में मिलान किया जाता है, लेकिन उसके बाद दोनों पैटर्न में अलग-अलग व्यवहार और परिणाम होंगे।
लालची क्वांटिफायर तब स्ट्रिंग के बाकी हिस्सों को थप्पड़ मार देगा, abc"d
। क्योंकि यह पैटर्न से मेल नहीं खाता है, फिर यह d
बैकट्रैक और ड्रॉप कर देगा, जिससे क्वांटिफायर को abc"
छोड़ दिया जाएगा abc"
। क्योंकि यह अभी भी पैटर्न से मेल नहीं खाता है, क्वांटिफायर "
छोड़ देगा "
, जिसमें केवल abc
। यह पैटर्न से मेल खाता है (जैसा कि "
क्वांटिफायर के बजाय एक शाब्दिक द्वारा मिलान किया जाता है), और रेगेक्स सफलता की रिपोर्ट करता है।
संपत्ति का परिमाणक भी स्ट्रिंग के बाकी हिस्सों को थप्पड़ मार देगा, लेकिन, लालची मात्रात्मक के विपरीत, यह पीछे नहीं हटेगा। इसकी सामग्री के बाद से, abc"d
, मैच के बाकी पैटर्न की अनुमति नहीं देता है, रेगेक्स बंद हो जाएगा और मैच में विफलता की रिपोर्ट करेगा।
क्योंकि निपुण क्वांटिफ़ायर बैकट्रैकिंग नहीं करते हैं, वे लंबे या जटिल पैटर्न पर एक महत्वपूर्ण प्रदर्शन में वृद्धि कर सकते हैं। वे, हालांकि, खतरनाक हो सकते हैं (जैसा कि ऊपर सचित्र है) अगर किसी को पता नहीं है कि कैसे, ठीक है, तो क्वांटिफायर आंतरिक रूप से काम करते हैं।