মডিউল পাঠ (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 হল সরাসরি
ডোমেইন।
কেন এটা ব্যবহার
- পঠনযোগ্যতা: পাঠক অবিলম্বে বুঝতে পারে যে গ্রুপটি শুধুমাত্র সেখানে আছে গঠন, একটি মান নিষ্কাশন না.
- পারফরম্যান্স: ইঞ্জিনকে গ্রুপের ম্যাচ সংরক্ষণ করতে হবে না।
- পরিষ্কার সংখ্যায়ন: সংখ্যাযুক্ত গ্রুপের সাথে সারিবদ্ধ থাকে "তথ্য আমার আসলে প্রয়োজন", হস্তক্ষেপ ছাড়াই।
নন-ক্যাপচারিং গ্রুপের সাথে অপ্টিমাইজ করা
(?:...) ব্যবহার করে ইঞ্জিনকে গ্রুপিং এবং কোয়ান্টিফায়ার নিয়ম প্রয়োগ করতে বলে মেমরি সংরক্ষণের মধ্যবর্তী ম্যাচের ফলাফল নষ্ট না করে। ভারী লুপ বা খুব দীর্ঘ টেক্সট প্রক্রিয়াকরণের ক্ষেত্রে এটি অত্যন্ত সুপারিশ করা হয়।
চেষ্টা করে দেখুন
পাঠ্যের প্রতিটি URL থেকে ডোমেন (`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 প্রচেষ্টার পরে উপলব্ধ