কম্পিউটার

জাভাস্ক্রিপ্টে নিয়মিত এক্সপ্রেশন ম্যাচিং


ধরুন আমাদের একটি ইনপুট স্ট্রিং str এবং একটি প্যাটার্ন p দেওয়া হয়েছে, আমাদেরকে সমর্থনের সাথে নিয়মিত এক্সপ্রেশন ম্যাচিং বাস্তবায়ন করতে হবে। এবং *।

এই চিহ্নগুলির ফাংশন −

হওয়া উচিত
  • . --> যেকোন একক অক্ষর মেলে।

  • * --> পূর্ববর্তী উপাদানগুলির সাথে শূন্য বা তার বেশি মেলে।

মিলটি সম্পূর্ণ ইনপুট স্ট্রিংকে কভার করতে হবে (আংশিক নয়)।

দ্রষ্টব্য

  • str খালি হতে পারে এবং শুধুমাত্র ছোট হাতের অক্ষর a-z ধারণ করে।

  • p খালি হতে পারে এবং শুধুমাত্র ছোট হাতের অক্ষর a-z এবং এর মতো অক্ষর ধারণ করে। অথবা *।

উদাহরণস্বরূপ -

যদি ইনপুট হয় −

const str = 'aa';
const p = 'a';

তারপর আউটপুট মিথ্যা হওয়া উচিত কারণ a পুরো স্ট্রিং aa এর সাথে মেলে না।

উদাহরণ

নিম্নলিখিত কোড -

const regexMatching = (str, p) => {
   const ZERO_OR_MORE_CHARS = '*';
   const ANY_CHAR = '.';
   const match = Array(str.length + 1).fill(null).map(() => {
      return Array(p.length + 1).fill(null);
   });
   match[0][0] = true;
   for (let col = 1; col <= p.length; col += 1) {
      const patternIndex = col - 1;
      if (p[patternIndex] === ZERO_OR_MORE_CHARS) {
         match[0][col] = match[0][col - 2];
      } else {
         match[0][col] = false;
      }
   }
   for (let row = 1; row <= str.length; row += 1) {
      match[row][0] = false;
   }
   for (let row = 1; row <= str.length; row += 1) {
      for (let col = 1; col <= p.length; col += 1) {
         const stringIndex = row - 1;
         const patternIndex = col - 1;
         if (p[patternIndex] === ZERO_OR_MORE_CHARS) {
            if (match[row][col - 2] === true) {
               match[row][col] = true;
            } else if (
               (
                  p[patternIndex - 1] === str[stringIndex]
                  || p[patternIndex - 1] === ANY_CHAR
               )
               && match[row - 1][col] === true
            ) {
                  match[row][col] = true;
            } else {
               match[row][col] = false;
            }
         } else if (
            p[patternIndex] === str[stringIndex]
            || p[patternIndex] === ANY_CHAR
         ) {
               match[row][col] = match[row - 1][col - 1];
            } else {
               match[row][col] = false;
            }
         }
      }
      return match[str.length][p.length];
};
console.log(regexMatching('aab', 'c*a*b'));

আউটপুট

নিম্নোক্ত কনসোলে আউটপুট -

true

  1. কিভাবে জাভাস্ক্রিপ্টে একটি নিয়মিত এক্সপ্রেশন পরীক্ষা এবং চালানো যায়?

  2. উদাহরণ সহ জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশন মডিফায়ার ব্যাখ্যা করুন

  3. জাভাস্ক্রিপ্টে নামযুক্ত ফাংশন এক্সপ্রেশন

  4. জাভাস্ক্রিপ্টে ইয়েলড* এক্সপ্রেশন/কীওয়ার্ড।