মূল কন্টেন্টে যান
মডিউল 2 · 3-এর পাঠ 4কোর্সে 7/32~10 min
মডিউল পাঠ (3/4)

লোভী বনাম অলস

ডিফল্টভাবে কোয়ান্টিফায়াররা লোভী: তারা যতটা সম্ভব গ্রাস করে প্যাটার্ন বৈধ রাখার সময়। কোয়ান্টিফায়ারের পরে ? যোগ করা হচ্ছে (*?, +?, ??, {n,m}?) আপনাকে অলস সংস্করণ দেয়: এটি যত কম খরচ করে সম্ভব।

Code
Sample: **uno** e *due*

Greedy pattern  <.*>     matches:  **uno** e *due*   (everything)
Lazy pattern    <.*?>    matches:  **           **
                                   *           *        (4 matches with the g flag)

ঠিক একই প্যাটার্ন, পার্থক্যের একটি একক অক্ষর (? এ যোগ করা হয়েছে পরিমাপক), সম্পূর্ণ ভিন্ন ফলাফল।

যখন এটা গুরুত্বপূর্ণ

  • **ডিলিমিটারের মধ্যে বিষয়বস্তু ** (HTML ট্যাগ, উদ্ধৃতি, বন্ধনী) অলস সংস্করণটি প্রায় সবসময়ই সঠিক।
  • লাইনের শেষ পর্যন্ত মেলাতে আপনি সাধারণত লোভী চান (.*)।

ইঞ্জিনে লোভী বনাম অলস কৌশল

একজন লোভী কোয়ান্টিফায়ার যতটা সম্ভব পাঠ্য গ্রাস করে এবং বাধ্য করা হলেই ব্যাকট্র্যাক করে। ? (lazy) যোগ করার মাধ্যমে, ইঞ্জিনটি পরম ন্যূনতম খরচ করে এবং প্যাটার্নের পরবর্তী মিলের জন্য অনুসন্ধান করার জন্য এক সময়ে একটি অক্ষর অগ্রসর করে।

চেষ্টা করে দেখুন

ব্যায়াম#regex.m2.l3.e1
প্রচেষ্টা: 0লোড হচ্ছে...

অলস সংস্করণ `.*?` ব্যবহার করে নমুনা থেকে প্রতিটি HTML ট্যাগ বের করুন (যেমন `**`, `**`, `*`, `*`)।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

লোভী <.*> প্রথম ট্যাগের শুরু থেকে শেষের শেষ পর্যন্ত মেলে। অলস <.*?> প্রথমে থেমে যায় > এটির মুখোমুখি হয়।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#regex.m2.l3.e2
প্রচেষ্টা: 0লোড হচ্ছে...

পাঠ্যের ডবল উদ্ধৃতিগুলির মধ্যে প্রতিটি স্ট্রিং বের করুন (যেমন "ciao", "mondo")। পরবর্তী ক্লোজিংগুলিতে জাম্পিং এড়াতে কোয়ান্টিফায়ারের অলস সংস্করণটি ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

"।*?" প্রথম সমাপনী ডবল উদ্ধৃতিতে থামে।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অতিরিক্ত চ্যালেঞ্জ

ব্যায়াম#regex.m2.l3.e3
প্রচেষ্টা: 0লোড হচ্ছে...

Extract all text blocks enclosed in square brackets (e.g. `[text]`), including the brackets, using a lazy quantifier so as not to merge separate blocks.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

খোলা বন্ধনীর জন্য \\[ ব্যবহার করুন, তারপর .*? এবং অবশেষে \\] বন্ধ বন্ধনীর জন্য।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ