"ज़ूम" लंगर
@ Jecxjo के जवाब के अलावा, कई परिस्थितियां हैं जहां आप शून्य-चौड़ाई वाले एंकर का उपयोग कर सकते हैं \zs
और \ze
इसके बजाय सकारात्मक रूप से देख सकते हैं । ये एंकर पूर्ण पैटर्न के भीतर मैच की शुरुआत ( \zs
) और अंत ( \ze
) को परिभाषित करते हैं ।
उदाहरण
foo\zsbar
मैच bar
से पहले होगा foo
( foo
मैच का हिस्सा नहीं)
foo\zebar
foo
इसके बाद मैच होगा bar
( bar
मैच का हिस्सा नहीं)
myFunction(\zs.*\ze)
एक फ़ंक्शन कॉल में मापदंडों से मेल खाएगा (प्रदर्शन प्रयोजनों के लिए, मैं लालची बनाम गैर-लालची मिलान पर ध्यान केंद्रित नहीं कर रहा हूं)
इसका उपयोग करने के लिए डाल
:substitute
कमांड का उपयोग करते समय ये सबसे उपयोगी हो जाते हैं । उदाहरण के लिए, कहते हैं कि मैं करने के लिए एक समारोह कॉल में पैरामीटर को बदलने के लिए करना चाहता था myFunction()
के साथ foo
:
:%s/myFunction(\zs.*\ze)/foo/
यह छोड़ देगा myFunction(
और )
बरकरार रहेगा , और आपको उन्हें अपने पैटर्न में कैप्चर करने या अपने प्रतिस्थापन में दोहराने की चिंता करने की आवश्यकता नहीं है ।
आप विम के रेगेक्स के लुकअवेशन फीचर का उपयोग करके ऐसा कर सकते हैं, लेकिन यह काफी क्लिंकी है:
:%s/\(myFunction(\)\@<=.*\()\)\@=/foo/
(मुझे लगता है कि यह वाक्यविन्यास मुझे भूल जाता है कि मैं पहली जगह में क्या करने की कोशिश कर रहा था।)
आपको अभी भी कभी-कभी देखने की आवश्यकता है
अभी भी ऐसी स्थितियाँ हैं जहाँ आपको नज़र रखने की ज़रूरत है। का उपयोग करते हुए \zs
और \ze
जहां आप साधारण स्थितियों के लिए महान हैं इससे पहले कि कुछ के बाद पाठ से मेल करने के लिए के बाद के बाद कुछ । लेकिन अगर यह उससे अधिक जटिल है, तो आपको संभवतः भारी लयबद्ध वाक्य रचना से चिपके रहना होगा।
मजेदार तथ्य
हालांकि वे काफी बदसूरत हैं, PC में उन लोगों की तुलना में Vim का लुकअप अधिक शक्तिशाली है! वे चर-लंबाई के नकारात्मक लुकअप का समर्थन करते हैं, जिसका अर्थ है कि आप यह दावा कर सकते हैं कि कुछ पैटर्न जिनकी लंबाई पूर्व निर्धारित नहीं है, आपके मैच से पहले नहीं है ।
PCRE इसका समर्थन नहीं करता है, क्योंकि यह काफी कम्प्यूटेशनल रूप से महंगा है। विम में यह बहुत बड़ी चिंता का विषय नहीं है, क्योंकि रेगेक्स के सबसे आम उपयोग के मामलों में इंटरएक्टिव खोज शामिल है जहां गणना समय उपयोगकर्ता के लिए लगभग अस्वीकार्य है। यदि आप इसे सिंटैक्स हाइलाइटिंग के लिए उपयोग किया गया था, तो आप शायद इसे नोटिस करेंगे।
प्रासंगिक सहायता विषय
:help \zs
:help \ze
:help perl-patterns