जवाबों:
पर्ल (और पीसीआरई) में यह एक शून्य-चौड़ाई लुकअप के साथ प्राप्त करने योग्य है :
(?<=funnyword).*$
जो "अजीब" से मेल खाता है, लेकिन मैच के हिस्से के रूप में इसका उपभोग नहीं करता है। ये केवल लुकबाइंड में निश्चित लंबाई वाले टेक्स्ट के साथ काम करते हैं। यह (?<!...)
निर्दिष्ट करने के लिए कि कुछ पाठ नहीं है, आप नकारात्मक रूप-रेखाओं ( ) का उपयोग कर सकते हैं ।
पर्ल के किसी भी हालिया संस्करण में, \K
लगभग एक सटीक विकल्प के\zs
रूप में आप इसका उपयोग कर रहे हैं:
funnyword\K.*$
\K
अब तक मिलान की गई हर चीज को अलग करता है, लेकिन बाद में उस बिंदु से मिलान जारी रखता है। इससे पहले के भाग \K
को निश्चित-लंबाई नहीं होना चाहिए। यह अभी पीसीआरई में भी है , लेकिन मुझे यकीन नहीं है कि यह किस संस्करण में आया है।
\ze
का उपयोग कर के बजाय शून्य-चौड़ाई लुकहैड के साथ प्राप्त किया जा सकता है (?=...)
। उस पैटर्न को निश्चित-लंबाई की आवश्यकता नहीं है।
क्योंकि sed POSIX BRE का उपयोग करता है , इसलिए कोई लुक-अप नहीं है । इस मामले में, हालांकि, आप एक साधारण कैप्चरिंग समूह का उपयोग करके इसे आसानी से अनुकरण कर सकते हैं:
sed -e 's/\(funnyword\).*$/\1otherword/'
आप सकारात्मक लुकहेड के लिए भी ऐसा ही कर सकते हैं। यदि आपको वास्तव में अधिक जटिल आवश्यकता है, तो आपको पर्ल या किसी अन्य दृष्टिकोण को देखना पड़ सकता है।