मान लीजिए कि हमें एक इनपुट स्ट्रिंग str और एक पैटर्न p दिया गया है, तो हमें समर्थन के साथ नियमित अभिव्यक्ति मिलान को लागू करने की आवश्यकता है। और *.
इन प्रतीकों के कार्य होने चाहिए -
-
. --> किसी एक वर्ण से मेल खाता है।
-
* --> पिछले तत्वों के शून्य या अधिक से मेल खाता है।
मिलान में संपूर्ण इनपुट स्ट्रिंग शामिल होनी चाहिए (आंशिक नहीं)।
नोट
-
str खाली हो सकता है और इसमें केवल लोअरकेस अक्षर a-z होते हैं।
-
p खाली हो सकता है और इसमें केवल लोअरकेस अक्षर a-z, और वर्ण जैसे होते हैं। या *.
उदाहरण के लिए -
यदि इनपुट है -
const str ='aa';const p ='a';
तब आउटपुट गलत होना चाहिए क्योंकि a संपूर्ण स्ट्रिंग a से मेल नहीं खाता है।
उदाहरण
निम्नलिखित कोड है -
const regexMatching =(str, p) => { const ZERO_OR_MORE_CHARS ='*'; कास्ट Any_CHAR ='।'; कॉन्स मैच =ऐरे (str.length + 1)। फिल (नल)। मैच [0] [0] =सच; के लिए (चलो col =1; col <=p.length; col +=1) { const patternIndex =col - 1; अगर (पी [पैटर्न इंडेक्स] ===ZERO_OR_MORE_CHARS) {मिलान [0] [कॉल] =मैच [0] [कॉल - 2]; } और {मैच [0] [कोल] =झूठा; } } के लिए (पंक्ति =1 दें; पंक्ति <=str.length; पंक्ति + =1) {मिलान [पंक्ति] [0] =झूठा; } के लिए (पंक्ति =1; पंक्ति <=str.length; पंक्ति + =1) { के लिए (col =1; col <=p.length; col + =1) { const stringIndex =row - 1; कॉन्स्ट पैटर्न इंडेक्स =कर्नल -1; अगर (पी [पैटर्न इंडेक्स] ===ZERO_OR_MORE_CHARS) { अगर (मिलान [पंक्ति] [कॉल - 2] ===सच) {मिलान [पंक्ति] [कॉल] =सच; } और अगर ((p[patternIndex - 1] ===str[stringIndex] || p[patternIndex - 1] ===ANY_CHAR) &&मैच [पंक्ति -1] [col] ===सच) {मिलान [पंक्ति [कोल] =सच; } और {मैच [पंक्ति] [col] =झूठा; } } और अगर (p[patternIndex] ===str[stringIndex] || p[patternIndex] ===ANY_CHAR) {मैच [पंक्ति] [कॉल] =मैच [पंक्ति -1] [कॉल -1]; } और {मैच [पंक्ति] [col] =झूठा; } } } वापसी मैच [str.length][p.length];};console.log(regexMatching('aab', 'c*a*b'));
आउटपुट
कंसोल पर आउटपुट निम्नलिखित है -
<पूर्व>सत्य