مرکزی مواد پر جائیں
ماڈیول 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 کوششوں کے بعد حل دستیاب ہے۔