मुख्य सामग्री पर जाएं
मॉड्यूल 6 · पाठ 2 का 4पाठ्यक्रम में 22/32~10 min
मॉड्यूल पाठ (2/4)

नकारात्मक अग्रदर्शी: `(?!...)`

नकारात्मक भविष्यदृष्टि (?!...) सकारात्मक भविष्यदृष्टि की काली बहन है: इसके लिए आवश्यक है कि दिया गया पैटर्न वर्तमान स्थिति का अनुसरण न करे। यह है अभी भी शून्य-चौड़ाई: कोई वर्ण उपभोग नहीं किया जाता है।

Code
Pattern: \d+(?! euro)
Sample:  Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
                                          ^^

केवल 75 मेल खाता है, क्योंकि यह अंकों का एकमात्र क्रम है जिसका अनुसरण नहीं किया जाता है euro. अंक 100 और 25 के बाद euro आते हैं और हैं बहिष्कृत.

विशिष्ट नकारात्मक लुकहेड पैटर्न

  • ^(?!.*errore).*$ -- एक पंक्ति जिसमें "errore" शब्द नहीं है।
  • \b(?!the\b)\w+\b -- एक शब्द जो the नहीं है।
  • (?!\s) -- वर्तमान स्थिति कोई रिक्त स्थान नहीं है ("ट्रिम" के रूप में उपयोगी)।
Code
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
  foto.jpg
  backup.bak
  documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)

नकारात्मक लुकहेड के माध्यम से उन्नत बहिष्करण

बहिष्करण तर्क को लागू करने के लिए नकारात्मक लुकहेड (?!...) आवश्यक है (जैसे यह सत्यापित करना कि पासवर्ड में शब्दकोश शब्द नहीं हैं या पहचानकर्ता class या function जैसा आरक्षित कीवर्ड नहीं है)।

इसे अजमाएं

व्यायाम#regex.m6.l2.e1
प्रयास: 0लोड हो रहा है...

प्रत्येक वह संख्या ज्ञात करें जिसके बाद 'यूरो' नहीं आता है (इसलिए यूरो की कीमतों को छोड़कर)।

संपादक लोड हो रहा है...
संकेत दिखाएँ

'अनुसरण नहीं करना चाहिए' कहने के लिए (?!...) का प्रयोग करें। `यूरो` अनुक्रम इसके बाद प्रकट नहीं होना चाहिए।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#regex.m6.l2.e2
प्रयास: 0लोड हो रहा है...

कम से कम 3 अक्षरों का प्रत्येक शब्द ढूंढें जो 'द' (केस-इन्सेंसिव) नहीं है।

संपादक लोड हो रहा है...
संकेत दिखाएँ

\\b के ठीक बाद एक नकारात्मक लुकअहेड (?!the\\b) खोलें जिसमें केवल शब्द शामिल नहीं है।

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#regex.m6.l2.e3
प्रयास: 0लोड हो रहा है...

Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).

संपादक लोड हो रहा है...
संकेत दिखाएँ

शब्द सीमा \\b के ठीक बाद एक नकारात्मक लुकअहेड (?!\\w*x) का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है