ক্যারেক্টার ক্লাস হচ্ছে কিছু ক্যারেক্টারের সমষ্টি বা সেট। এর মাধ্যমে এই সেটের মধ্যেকার যেকোনো একটি ক্যারেক্টারের সাথে নির্দিষ্ট কোন স্ট্রিং -কে ম্যাচ করে দেখা যায়। আবার একটি নির্দিষ্ট রেঞ্জ পর্যন্ত ক্যারেক্টার এর সাথেও ম্যাচ করা যায়। []
বন্ধনী ব্যবহার করে এবং এর মধ্যে নির্দিষ্ট কিছু ক্যারেক্টার যুক্ত করে একটি ক্যারেক্টার ক্লাস তৈরি করা হয় যা পরবর্তীতে সার্চ প্যাটার্ন হিসেবে ব্যবহার করা হয়।
উদাহরণ,
একটি ক্যারেক্টার ম্যাচ
import re
# A character set containing all vowels
pattern = r"[aeiou]"
# Lets check whether a word got a vowel in it or not
if re.search(pattern, "grey"):
print("The word 'grey' got at least one vowel!")
else:
print("No vowel found!")
if re.search(pattern, "qwertyuiop"):
print("The word 'qwertyuiop' got at least one vowel!")
else:
print("No vowel found!")
if re.search(pattern, "rhythm myths"):
print("The word 'rhythm myths' got at least one vowel!")
else:
print("No vowel found!")
আউটপুট,
The word 'grey' got at least one vowel!
The word 'qwertyuiop' got at least one vowel!
No vowel found!
ক্যারেক্টার রেঞ্জ ম্যাচ
ক্যারেক্টার সেট তৈরি করার সময় -
চিহ্ন দিয়ে একটি রেঞ্জ ডিফাইন করা হয়। যেমন, [a-z]
ক্লাস দিয়ে ছোট হাতের যেকোনো ইংলিশ বর্ণ ম্যাচ করা হয়। [A-Z]
দিয়ে যেকোনো বড় হাতের ইংলিশ বর্ণ। [0-9]
দিয়ে যেকোনো নিউমেরিক ডিজিট ম্যাচ করে দেখা হয়, ইত্যাদি।
উদাহরণ,
import re
pattern = r"[A-Z][A-Z][0-9]"
if re.search(pattern, "NS1 is prefix of first name server address."):
# Found NS1 as match
print("OK")
if re.search(pattern, "You should put a second one with NS2 as prefix."):
# Found NS2 as match
print("OK")
if re.search(pattern, "I don\'t have any nameserver."):
print("NS3")
else:
print("Not OK!")
if re.search(pattern, "PY3K"):
# Found PY3 as match
print("OK")
আউটপুট,
OK
OK
Not OK!
OK
অর্থাৎ উপরের [A-Z][A-Z][0-9]
প্যাটার্নের মাধ্যমে একটি স্ট্রিং এর মধ্যে "দুটি বড় হাতের ইংলিশ বর্ণ এবং তার সাথেই যুক্ত একটি নিউমেরিক ডিজিট" সম্পন্ন একটি প্যাটার্ন ম্যাচ করা হচ্ছে।
ক্যারেক্টার ক্লাসে ^ এর ব্যবহার
আমরা আগে জেনেছি যে, ^
হচ্ছে একটি মেটা ক্যারেক্টার।
ক্যারেক্টার ক্লাসে ^
এর গুরুত্বপূর্ণ একটি ভূমিকা আছে। এর মাধ্যমে সাধারণ ভাবে তৈরি করা একটি ক্যারেক্টার ক্লাসের ঠিক উল্টো অর্থ ডিফাইন করা হয়। অর্থাৎ এটি একটি ক্যারেক্টার ক্লাসের অর্থকে invert করে ফেলে। অর্থাৎ [A-Z]
দিয়ে যদি যেকোনো বড় হাতের ইংলিশ বর্ণের উপস্থিতি যাচাই করা হয়, তাহলে [^A-Z]
দিয়ে যেকোনো বড় হাতের ইংলিশ বর্ণের অনুপস্থিতি যাচাই বা ম্যাচ করা হয়।
উদাহরণ,
import re
# Match string that contains NOT ALL Capital letters
pattern = r"[^A-Z]"
if re.search(pattern, "a sentence with all lower case letters."):
print("Match 1")
if re.search(pattern, "A sentence with mixed English letters."):
print("Match 2")
if re.search(pattern, "HEADING"):
# All Capital letters
# No Match
print("Match 3")
if re.search(pattern, "HEADING WITH ALL CAPITAL LETTERS"):
# All Capital letters
# but "spaces" makes it True to NOT ALL Capital
print("Match 4")
আউটপুট,
Match 1
Match 2
Match 4
ক্যারেক্টার ক্লাস ডিফাইন করার সময়
^
মেটা ক্যারেক্টারটির এর ভূমিকা থাকলেও অন্য মেটা ক্যারেক্টার যেমন -.
বা$
এর কোন ভূমিকা নেই।