/ / .NET नियमित अभिव्यक्ति में एंकर - .net, regex

.NET नियमित अभिव्यक्तियों में एंकर - .NET, regex

यह प्रश्न में दिए गए उत्तर के बारे में एक प्रश्न है सभी वर्ण हेक्साडेसिमल मान हैं यह देखने के लिए एक स्ट्रिंग की जाँच करें.

प्रस्तावित नियमित अभिव्यक्ति निम्नलिखित है:

Ab[0-9a-fA-F]+bZ

अभी व, A तथा Z के बराबर प्रतीत होता है ^ तथा $ क्रमशः। Z अलग तरीके से व्यवहार करता है, जिसमें यह मेल खाते समय एक नई रूपरेखा की अनुमति देता है (यह इरादा नहीं भी हो सकता है)।

मुझे क्या समझ में नहीं आता है क्यों b "शब्द सीमा पर मेल" लंगर का उपयोग किया जाता है। एक स्ट्रिंग की शुरुआत / अंत हमेशा एक शब्द सीमा नहीं होती है?

अंततः, रेगेक्स को फिर से लिखा जा सकता है ^[0-9a-fA-F]$ एक ही व्यवहार के साथ (अनुगामी की अनदेखी) n मुद्दा)। क्या मैं कुछ भूल रहा हूँ? उपयोग कर रहा है b कुछ अजीब बढ़त मामले के लिए आवश्यक?

परीक्षण के मामलों:

123ABC -> true
123def -> Returns true
123g -> Returns false

उत्तर:

उत्तर № 1 के लिए 1

The शब्द सीमा b गैर-शब्द और शब्द पात्रों के बीच मेल खाता है, और स्ट्रिंग के शुरू में भी यदि पहला चरित्र एक शब्द चरित्र है, और अंत में यदि अंतिम चरित्र एक शब्द चरित्र है।

इस प्रकार, Ab[0-9a-fA-F]+bZ के बराबर है A[0-9a-fA-F]+Z इसलिये स्ट्रिंग में सभी पात्रों शब्द अक्षर होना चाहिए ([0-9] अंक या [a-fA-F] पत्र) पैटर्न के लिए यह मैच के लिए.

यह इस मामले में एक अलग कहानी होगी: Ab[0-9a-fA-F-]+bZ कि केवल शुरुआत और अंत में शब्द पात्रों के साथ तार मैच होगा ।

उपयोग z एक पूरी स्ट्रिंग मैच के लिए, नहीं के साथ n अंत में अनुमति दी।