কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে রেগুলার এক্সপ্রেশন ম্যাচিং

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

এই সিম্বলগুলো কাজ করে:

  • . — যেকোনো একক ক্যারেক্টারের সাথে ম্যাচ করে।
  • * — পिछনের এলিমেন্টের শূন্য বা একাধিক আৱার্তনের সাথে ম্যাচ করে।

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

নোট

  • str খালি হতে পারে এবং শুধু লোয়ারকেস অক্ষর a-z ধারণ করতে পারে।
  • p খালি হতে পারে এবং শুধু লোয়ারকেস অক্ষর a-z, এবং . বা * ক্যারেক্টার ধারণ করতে পারে।

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

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

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

তাহলে আউটপুট হবে false, কারণ 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. জাভাস্ক্রিপ্টে yield* এক্সপ্রেশন/কিওয়ার্ড