Regular Expressions (Regex)
Regular Expressions বা Regex হলো টেক্সট সার্চ এবং ম্যানিপুলেশনের একটি অত্যন্ত শক্তিশালী টুল। এটি নির্দিষ্ট কোনো প্যাটার্ন ব্যবহার করে বড় টেক্সট থেকে ডাটা খুঁজে বের করতে সাহায্য করে। পাইথনে এর জন্য বিল্ট-ইন re মডিউল ব্যবহার করা হয়।
১. Basic Functions
re.search(): টেক্সটের কোথাও প্যাটার্নটি আছে কি না তা খুঁজে বের করে।re.match(): টেক্সটের একদম শুরুতে প্যাটার্নটি আছে কি না তা দেখে।re.findall(): টেক্সটের সব জায়গায় যতবার প্যাটার্নটি পাওয়া যাবে, সবগুলোর লিস্ট দেয়।re.sub(): প্যাটার্ন অনুযায়ী টেক্সট রিপ্লেস করে।
python
import re
text = "আমার ফোন নম্বর হলো ০১৭-১২৩৪৫৬৭৮"
pattern = r"\d{3}-\d{8}" # r মানে Raw String
if re.search(pattern, text):
print("ফোন নম্বর পাওয়া গেছে!")২. Regex Meta-characters (মেটা-ক্যারেক্টারস)
প্যাটার্ন তৈরির জন্য কিছু বিশেষ চিহ্ন ব্যবহার করা হয়:
| Character | Description |
|---|---|
. | যেকোনো একটি কারেক্টার (নিউলাইন বাদে) |
^ | লাইনের শুরু |
$ | লাইনের শেষ |
* | ০ বা তার বেশি সংখ্যক বার |
+ | ১ বা তার বেশি সংখ্যক বার |
? | ০ বা ১ বার |
\d | যেকোনো সংখ্যা (Digit) |
\w | যেকোনো লেটার, সংখ্যা বা আন্ডারস্কোর |
\s | যেকোনো স্পেস (Space/Tab) |
৩. Groups এবং Capturing
ব্র্যাকেট ( ) ব্যবহার করে আপনি প্যাটার্নের নির্দিষ্ট কোনো অংশ আলাদা করতে পারেন।
python
email = "ripon@example.com"
# ইউজারনেম এবং ডোমেইন আলাদা করা:
pattern = r"(\w+)@(\w+)\.com"
match = re.search(pattern, email)
if match:
print(f"Username: {match.group(1)}")
print(f"Domain: {match.group(2)}")৪. Regex Flags
সার্চিং করার সময় কিছু মোড অন করা যায়। যেমন- কেস-সেন্সিটিভিটি ইগনোর করা।
python
text = "PYTHON is cool"
# re.IGNORECASE ব্যবহার করে:
match = re.search(r"python", text, re.IGNORECASE)৫. কেন শিখবেন?
- Data Validation: ইমেইল, ফোন নম্বর বা পাসওয়ার্ডের ফরমেট ঠিক আছে কি না তা চেক করতে।
- Web Scraping: ওয়েবসাইট থেকে নির্দিষ্ট ডাটা (যেমন- দাম, টাইটেল) খুঁজে বের করতে।
- Log Analysis: বড় সার্ভার লগ ফাইল থেকে এরর খুঁজে বের করতে।
TIP
Regex শুরুতে একটু কঠিন মনে হতে পারে, কিন্তু একবার আয়ত্ত করতে পারলে এটি আপনার ঘণ্টার কাজ মিনিটে করে দিবে। প্র্যাকটিস করার জন্য regex101.com ওয়েবসাইটটি ব্যবহার করতে পারেন।