2012-12-28 5 views
7

मैं "नहीं" की सभी उपस्थिति ढूंढना चाहता हूं, लेकिन इसमें "अच्छा नहीं" या "बुरा नहीं" शब्द शामिल नहीं हैं।पायथन नियमित अभिव्यक्ति: सुपरस्ट्रिंग को कैसे छोड़ना है?

उदाहरण के लिए, "अच्छा नहीं, बुरा नहीं, मेरा नहीं" पहले और आखिरी "नहीं" से मेल खाता है।

मैं पाइथन में पुनः पैकेज का उपयोग करके इसे कैसे प्राप्त करूं? नकारात्मक लुक-आगे जोर

उत्तर

8

उपयोग:

\bnot\b(?!\s+(?:good|bad)) 

यह not से मेल खाएगी, इस मामले में जहां good और bad सही स्ट्रिंग में not के बाद कर रहे हैं को छोड़कर। या knot में not के बजाय, हम not शब्द से मेल खाने के लिए शब्द सीमा \b जोड़ चुके हैं।


\b शब्द सीमा है। यह जांचता है कि सामने वाला चरित्र शब्द चरित्र है और चरित्र के बाद चरित्र नहीं है, और इसके विपरीत। शब्द चरित्र आमतौर पर अंग्रेजी वर्णमाला (ए-जेड, ए-जेड), अंक (0-9), और अंडरस्कोर (_) है, लेकिन रेगेक्स स्वाद के आधार पर और अधिक हो सकता है।

(?!pattern) शून्य-चौड़ाई नकारात्मक दिखने के लिए वाक्यविन्यास है - यह वर्तमान बिंदु से जांच करेगा, यह इनपुट स्ट्रिंग में आगे pattern निर्दिष्ट नहीं हो सकता है।

\s खाली स्थान के चरित्र (- अधिक जानकारी के दस्तावेज़ देखने अंतरिक्ष (ASCII 32), नई लाइन \n, टैब \t, आदि) को दर्शाता है। यदि आप इतनी मनमाने ढंग से मेल नहीं करना चाहते हैं, तो को (स्पेस) के साथ प्रतिस्थापित करें।

+\s+ में पिछले टोकन के एक या एक से अधिक उदाहरणों से मेल खाता है, इस मामले में, यह व्हाइटस्पेस चरित्र है।

(?:pattern) गैर-कैप्चरिंग समूह है। good और bad पर कब्जा करने की कोई आवश्यकता नहीं है, इसलिए मैं प्रदर्शन के लिए निर्दिष्ट करता हूं।

+1

धन्यवाद, लेकिन क्या आप प्रत्येक नोटेशन का अर्थ बता सकते हैं? – CodeNoob

+0

@CodeNoob: संपादित। मुझे लगता है कि आप कम से कम बुनियादी नोटिफिकेशन जानते हैं। – nhahtdh

+0

भयानक, बहुत सराहना की। – CodeNoob

संबंधित मुद्दे