Regular Expressions
लाहहैड और लुकहाइंड
खोज…
वाक्य - विन्यास
- सकारात्मक अग्रावलोकन:
(?=pattern) - नकारात्मक लुकहेड:
(?!pattern) - सकारात्मक खोज :
(?<=pattern) - नकारात्मक खोज :
(?<!pattern)
टिप्पणियों
सभी रेगेक्स इंजन द्वारा समर्थित नहीं है।
इसके अतिरिक्त, कई रेगेक्स इंजन, लुकबाइंड के अंदर के पैटर्न को निश्चित-लंबाई के तार तक सीमित करते हैं। उदाहरण के लिए पैटर्न (?<=a+)b को aaab में b मेल खाना चाहिए लेकिन पायथन में एक त्रुटि फेंकता है।
कैप्चरिंग समूहों को अनुमति दी जाती है और बैकरेफरेंस सहित, अपेक्षित रूप से काम करते हैं। हालांकि लुकहेड / लुकबाइंड एक कैप्चरिंग ग्रुप नहीं है, हालाँकि।
मूल बातें
एक सकारात्मक रूपांतर (?=123) दावा है कि पाठ को दिए गए पैटर्न के बिना, मैच में पैटर्न सहित शामिल किया गया है। इसी तरह, एक सकारात्मक खोज के रूप में (?<=123) पाठ को दिए गए पैटर्न से पहले बताया गया है। की जगह = साथ ! दावे को नकारता है।
इनपुट : 123456
-
123(?=456)मैच123( सकारात्मक रूपांतर ) -
(?<=123)456मैच456( सकारात्मक खोज ) -
123(?!456)विफल रहता है ( नकारात्मक रूपांतर ) -
(?<!123)456विफल ( नकारात्मक खोज )
इनपुट : 456
-
123(?=456)विफल रहता है -
(?<=123)456विफल रहता है -
123(?!456)विफल रहता है -
(?<!123)456मैच456
परीक्षण समाप्ति की तलाश में
एक निश्चित तरीके से समाप्त होने या न होने के लिए एक पैटर्न के अंत में एक लुकबाइंड का उपयोग किया जा सकता है।
([az ]+|[AZ ]+)(?<! ) से मेल खाता है केवल के दृश्यों लोअरकेस या केवल शब्दों अपरकेस जबकि पिछली श्वेत रिक्ति को छोड़कर।
चर-लंबाई की खोज के साथ \ K का अनुकरण करना
कुछ regex फ्लेवर (Perl, PCRE, Oniguruma, Boost) केवल निश्चित-लंबाई वाले लुकबाइंड का समर्थन करते हैं, लेकिन \K सुविधा प्रदान करते हैं, जिसका उपयोग पैटर्न की शुरुआत में चर-लंबाई के लुकबाइंड को अनुकरण करने के लिए किया जा सकता है। A \K सामना करने पर, इस बिंदु तक का मिलान किया हुआ पाठ छोड़ दिया जाता है, और अंतिम परिणाम में केवल \K बाद वाले भाग के मिलान वाले पाठ को रखा जाता है।
ab+\Kc
के बराबर है:
(?<=ab+)c
सामान्य तौर पर, फॉर्म का एक पैटर्न:
(subpattern A)\K(subpattern B)
समाप्त होता है:
(?<=subpattern A)(subpattern B)
सिवाय इसके कि जब बी सबपाटर्न ए टेक्स्ट को एक सबपैटर्न के रूप में मैच कर सकता है - आप सूक्ष्म रूप से अलग-अलग परिणामों के साथ समाप्त हो सकते हैं, क्योंकि ए सबपैटर्न अभी भी एक सच्चे लुकबाइंड के विपरीत, टेक्स्ट का उपभोग करता है।