ইলিমেন্ট এর সংখ্যা ডিটেক্ট করার জন্যে কোয়ান্টিফায়ার ব্যবহার করা হয়। এতোক্ষন যা দেখলাম সবগুলো মোটামোটি একটা মাত্র ইলিমেন্ট সিলেক্ট করার জন্যে ইউজ করা হয়। এখন আমরা যদি মাল্টিপল ইলিমেন্ট সিলেক্ট করতে চাই তাহলেই আমাদের কোয়ান্টিফায়ার লাগবে। কোয়ান্টিফায়ার ক্যারেক্টার ক্লাস, গ্রুপ বা রেঞ্জের পরে ইউজ করা হয় ঐগুলোর সংখ্যা নির্দেশ করার জন্যে।
*
(শূন্যটা অথবা এরকম আরো) => এরকম রেঞ্জের, ক্যারেক্টার ক্লাসের বা গ্রুপের শূন্যটা বা এরকম আরো থাকলে সেগুলো সিলেক্ট করা হবে। এটা একটু ট্রিকি। তবে এখানে আমি যদি সবার নামে সিলেক্ট করতে চাই তাহলে এটা দিয়ে করতে পারবো
+
(একটা অথবা এরকম আরো) => ধরি আমরা সবগুলো ডিজিট সিলেক্ট করতে চাচ্ছি একসাথে। তো আমরা রেঞ্জ [0–9] ইউজ করতে পারি। কিন্তু এক্ষেত্রে একটা একটা করে সবগুলো ডিজিট সিলেক্ট হবে, পুরোটা একসাথে হবে না। পুরোটা একসাথে করতে চাইলে ঐ রেঞ্জের শেষে +
ইউজ করা যেতে পারে। এর মানে হচ্ছে এইরকম রেঞ্জের একটা বা আরো এরকম ইলিমেন্ট আছে এমন স্ট্রিং সিলেক্ট করা হবে।
?
(শূন্যটা বা একটা) => হয়তো একটা আছে নয়তো একেবারেই নাই এরকম কোনো সেট থাকলে সেটাকে সিলেক্ট করা হবে। ধরি আমি Ahmed সিলেক্ট করতে চাচ্ছি। এখন অনেকে এটাকে Ahmmed হিসেবেও লিখে। এখন এটাও যাতে আমি সিলেক্ট করতে পারি সেজন্যে এরকমভাবে লিখতে পারিঃ
{3}
(ঠিক এতোটা, এখানে তিনটা) => যদি আমরা একই রকমের কোনো ক্যারেক্টার বা প্যাটার্ন নির্দিষ্ট নাম্বারে খোঁজ করতে চাই তাহলে এটা ইউজ করা যেতে পারে। এখানে ভালো উদাহরণ হিসাবে যায় যদি আমরা সব ডিজিট খুঁজতে চাই। আমাদের এখানে টোটাল ডিজিট আছে দশটা। ধরি আমরা পাঁচটা পাঁচটা করে খুঁজতে চাইঃ
{3,}
(এতোটা বা তারচেয়ে বেশী, এখানে তিনটা বা তারচেয়ে বেশী) => এটাও আগেরটার মতো। এতোটা বা তার বেশী থাকলে সেগুলো সিলেক্ট করা হবে। ধরি আমরা ওয়ার্ড ক্যারেক্টারগুলো ২০ টার বেশী থাকলে সেগুলো সিলেক্ট করতে চাইঃ
{3,5}
(মিনিমান, ম্যাস্কিমাম। এখানে মিনিমাম তিনটা বা ম্যাক্সিমাম পাঁচটা) => এটাও ঠিক আগেরগুলোর মতো, কিন্তু এক্ষেত্রে মিনিমাম বা ম্যাস্কিমাম রেঞ্জ ডিফাইন করে দেওয়া হয়েছে।
***এই ( * + {}
) কোয়ান্টিফায়ারগুলোকে গ্রিডি(Greedy)অপারেটর বলা হয়, এদের ইউজ করা হলে এরা যতটুকু পর্যন্ত সম্ভব পুরোটা সিলেক্ট করে ফেলে। আপনি এই গ্রিডি অপারেটরগুলোকে চাইলে লেজি(Lazy) করতে পারবেন এগুলোর শেষে ?
অপারেটর ইউজ করে।
***যেমন, গ্রিডি h.+l
'hell'
ম্যাচ করবে'hello'
থেকে কিন্তু লেজি h.+?l
শুধুমাত্র'hel'
ম্যাচ করবে।