ماڈیول اسباق (3/4)
غیر کیپچر کرنے والے گروپس: `(؟:...)`
اکثر قوسین کی ضرورت صرف گروپ کے لیے ہوتی ہے (مقدار، متبادل)
اور قیمت نکالنے کے لیے نہیں۔ اس صورت میں غیر کیپچرنگ کا استعمال کریں
ورژن: (?:...) یہ (...) پر یکساں طور پر کام کرتا ہے لیکن نہیں بناتا
ایک نمبر والا گروپ۔
Pattern: (?:https?)://(\w+\.\w+)
Sample: https://example.com e http://test.org
Match e gruppi:
match = "https://example.com" gruppo1 = "example.com"
match = "http://test.org" gruppo1 = "test.org"(?:https?) ? کوانٹیفائر کو لاگو کرنے کے لئے اسکیم کو گروپ کرتا ہے، لیکن ہم ہیں
https کو بطور گروپ نکالنے میں دلچسپی نہیں ہے: گروپ 1 براہ راست ہے
ڈومین۔
اسے کیوں استعمال کریں۔
- پڑھنے کی اہلیت: قاری فوراً سمجھ جاتا ہے کہ گروپ صرف اس کے لیے ہے۔ ساخت، ایک قدر نکالنے کے لئے نہیں.
- کارکردگی: انجن کو گروپ کے میچ کو ذخیرہ کرنے کی ضرورت نہیں ہے۔
- کلین نمبرنگ: نمبر والے گروپس کے ساتھ منسلک رہتے ہیں۔ "معلومات جس کی مجھے درحقیقت ضرورت ہے"، بغیر مداخلت کے۔
غیر کیپچر کرنے والے گروپوں کے ساتھ اصلاح کرنا
(?:...) کا استعمال انجن سے کہتا ہے کہ وہ میموری کو ضائع کیے بغیر گروپ بندی اور کوانٹیفائر اصولوں کو لاگو کرے اور انٹرمیڈیٹ میچ کے نتائج کو ذخیرہ کرے۔ بھاری لوپس یا بہت طویل ٹیکسٹ پروسیسنگ میں اس کی بہت سفارش کی جاتی ہے۔
اسے آزمائیں
متن میں موجود ہر یو آر ایل سے ڈومین (`example.com`, `test.org`…) نکالیں۔ پروٹوکول کے لیے `(؟:https؟)` استعمال کریں (اسے پکڑنے کی ضرورت نہیں) اور ڈومین کے لیے ایک گروپ۔
اشارہ دکھائیں۔
پہلے گروپ کو (https?) سے تبدیل کریں (?:https?): اسے پکڑنے کی ضرورت نہیں، آپ کو صرف ڈومین چاہیے۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
`ab` کی ہر تکرار کو ایک ہی میچ کے طور پر تلاش کریں، لیکن گروپ کیپچر کیے بغیر (چونکہ آپ کو صرف پورے میچ کی ضرورت ہے)۔
اشارہ دکھائیں۔
پچھلے سبق کی طرح ایک ہی نحو، لیکن (ab)+ کے بجائے (?:ab)+ کے ساتھ۔
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
Find price digits followed optionally by decimal parts inside a non-capturing group, e.g. `100` or `100.50`.
اشارہ دکھائیں۔
استعمال کریں (?:\\.\\d{2})؟ اعشاری حصے کو کیپچر کیے بغیر اختیاری بنانا۔
3 کوششوں کے بعد حل دستیاب ہے۔