*, ?, +हर तरह के किरदार इस चरित्र से मेल खाते हैं। किस चरित्र का अर्थ है कि यह मेल नहीं खाता? उदाहरण मदद करेंगे।
*, ?, +हर तरह के किरदार इस चरित्र से मेल खाते हैं। किस चरित्र का अर्थ है कि यह मेल नहीं खाता? उदाहरण मदद करेंगे।
जवाबों:
आप कुछ वर्णों को बाहर करने के लिए नकारात्मक वर्ण वर्गों का उपयोग कर सकते हैं: उदाहरण के लिए [^abcde]कुछ भी लेकिन ए, बी, सी, डी, ई पात्रों से मेल खाएगा।
सभी वर्णों को शाब्दिक रूप से निर्दिष्ट करने के बजाय, आप वर्ण वर्गों के अंदर शॉर्टहैंड का उपयोग कर सकते हैं : [\w](लोअरकेस) किसी भी "शब्द चरित्र" (अक्षर, संख्या और अंडरस्कोर [\W]) से मेल खाएगा , (अपरकेस) कुछ भी लेकिन शब्द वर्णों से मेल खाएगा; इसी तरह, [\d]0-9 अंकों का मिलान करेगा , जबकि [\D]कुछ भी 0-9 अंकों से मेल खाएगा , और इसी तरह।
यदि आप PHP का उपयोग करते हैं तो आप regex वर्ण वर्गों के दस्तावेज़ देख सकते हैं ।
"मैच नहीं करते" कहने के दो तरीके हैं: चरित्र पर्वतमाला, और शून्य-चौड़ाई नकारात्मक लुकहैड / लुकबाइंड।
पूर्व: मेल नहीं खाते a, b, cया 0:[^a-c0]
उत्तरार्द्ध: को छोड़कर किसी भी तीन-अक्षर स्ट्रिंग से मेल खाता है fooऔर bar:
(?!foo|bar).{3}
या
.{3}(?<!foo|bar)
इसके अलावा, आप के लिए एक सुधार: *, ?और +वास्तव में कुछ भी मेल नहीं खाते। वे पुनरावृत्ति ऑपरेटर हैं, और हमेशा एक मिलान ऑपरेटर का पालन करते हैं। इस प्रकार, a+साधन से एक या अधिक से मेल खाते हैं a, [a-c0]+इसका मतलब है एक या एक से मेल खाते हैं की अधिक a, b, cया 0है, जबकि [^a-c0]+एक से मेल होता है या कुछ भी की अधिक है कि नहीं था a, b, cया 0।
^((?!foo).)+$किसी भी पंक्ति का मेल न करें जिसमें foo regex101.com/r/z6a65l/4
^ एक चरित्र रेंज की शुरुआत में इस्तेमाल किया, या नकारात्मक लग रही / खोज पर जोर दिया।
>>> re.match('[^f]', 'foo')
>>> re.match('[^f]', 'bar')
<_sre.SRE_Match object at 0x7f8b102ad6b0>
>>> re.match('(?!foo)...', 'foo')
>>> re.match('(?!foo)...', 'bar')
<_sre.SRE_Match object at 0x7f8b0fe70780>
?!अंतिम 2 उदाहरणों में उपयोग करना है या आप केवल !अपने द्वारा उपयोग कर सकते हैं ? ?वहाँ क्या करता है?
?यह बताने की आवश्यकता है कि यह एक विस्तार है। अन्य रेगेक्स इंजन के अपने नियम हो सकते हैं।