বাংলায় পাইথন
  • পরিচিতি
  • ইনস্টলেশন
  • ব্যাসিক কনসেপ্ট
    • সাধারণ কিছু অপারেশন
    • আরও কিছু নিউমেরিক অপারেশন
    • স্ট্রিং
    • ব্যাসিক ইনপুট আউটপুট
    • স্ট্রিং অপারেশন
    • টাইপ কনভার্সন
    • ভ্যারিয়েবল
    • ইনপ্লেস অপারেটর
    • এডিটর এর ব্যবহার
  • কন্ট্রোল স্ট্রাকচার
    • বুলিয়ান
    • if স্টেটমেন্ট
    • else স্টেটমেন্ট
    • বুলিয়ান লজিক
    • অপারেটর প্রেসিডেন্স
    • while লুপ
    • লিস্ট
    • লিস্ট অপারেশন
    • লিস্ট ফাংশন
    • রেঞ্জ
    • for লুপ
  • গুরুত্বপূর্ণ ডাটা টাইপ
    • None
    • ডিকশনারি
    • ডিকশনারি ফাংশন
    • টাপল
    • আবারও লিস্ট
    • লিস্ট ও ডিকশনারি কম্প্রিহেনশন
  • ফাংশন ও মডিউল
    • কোডের পুনব্যবহার
    • ফাংশন
    • ফাংশন আর্গুমেন্ট
    • ফাংশন রিটার্ন
    • কমেন্ট ও ডক স্ট্রিং
    • অবজেক্ট হিসেবে ফাংশন
    • মডিউল
    • স্ট্যান্ডার্ড লাইব্রেরী
    • pip
  • ফাইল ও এক্সেপশন
    • এক্সেপশন
    • এক্সেপশন হ্যান্ডেলিং
    • finally
    • এক্সেপশন Raise
    • Assertions
    • ফাইল খোলা
    • ফাইল পড়া
    • ফাইলে লেখা
    • ফাইল নিয়ে সঠিক কাজ
  • ফাংশনাল প্রোগ্রামিং
    • ভূমিকা
    • ল্যামডা
    • ম্যাপ ও ফিল্টার
    • জেনারেটর
    • ডেকোরেটর
    • রিকারসন
    • সেট
    • itertools
  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
    • ক্লাস
    • ইনহেরিটেন্স
    • ম্যাজিক মেথড
    • অপারেটর অভারলোডিং
    • অবজেক্ট লাইফ সাইকেল
    • ডাটা হাইডিং
    • স্ক্লাস মেথড ও ট্যাটিক মেথড
    • প্রোপার্টিস
  • রেগুলার এক্সপ্রেশন
    • পরিচিতি
    • মেটা ক্যারেক্টার
    • ক্যারেক্টার ক্লাস
    • গ্রুপ
    • স্পেশাল সিকুয়েন্স
  • অতিরিক্ত কিছু বিষয়
    • পাইথনিকনেস
    • PEP
    • main
    • # -- coding: utf-8 --
    • #! /usr/bin/env python
    • CPython
    • ডকুমেন্টেশন পড়া
  • প্যাকেজিং
Powered by GitBook
On this page
  1. রেগুলার এক্সপ্রেশন

মেটা ক্যারেক্টার

PreviousপরিচিতিNextক্যারেক্টার ক্লাস

Last updated 6 years ago

CtrlK

আমরা এর আগে জেনেছি যে রেগুলার এক্সপ্রেশন হচ্ছে এক ধরণের ডোমেইন স্পেসিফিক ল্যাঙ্গুয়েজ। উদাহরণ হিসেবে জেনেছি SQL এর কথা। তাই স্বাভাবিক ভাবেই এর মাধ্যমে জটিল কিছু লজিক বা প্যাটার্ন লিখতে হতেই পারে। আর তাই, রেগুলার এক্সপ্রেশন লেখার সময় কিছু মেটা ক্যারেক্টার এর ব্যবহার করতে হয়। এগুলোর ব্যবহারের মাধ্যমে বস্তুত রেগুলার এক্সপ্রেশনকে আরও ডাইনামিক ভাবে ব্যবহার করা যায়। নিচের কিছু উদাহরণ দেখলেই বিষয়টি পরিষ্কার হয়ে যাবে।

. (dot) এই মেটা ক্যারেক্টারের মাধ্যমে যেকোনো ক্যারেক্টার ম্যাচ করার নির্দেশ দেয়া হয় (শুধু নিউ লাইন ক্যারেক্টার বাদে)।

উদাহরণ,

import re

pattern = r"gr.y"

if re.match(pattern, "grey"):
   print("Match 1")

if re.match(pattern, "gray"):
   print("Match 2")

if re.match(pattern, "blue"):
   print("Match 3")

আউটপুট,

Match 1
Match 2

উপরে আমরা একটি রেগুলার এক্সপ্রেশন ডিফাইন করেছি r"gr.y" এর মাধ্যমে। এখানে . দিয়ে ওই অবস্থানে যেকোনো ক্যারেক্টার এর সাথে ম্যাচ দেখতে বলা হয়েছে। আর তাই যখন grey বা gray এর সাথে ম্যাচ করা হয়েছে তখন রেজাল্ট সত্য এসেছে এবং একটি প্রিন্ট স্টেটমেন্ট এক্সিকিউট হয়েছে। blue এর ক্ষেত্রে তা হয় নি।

ইতোমধ্যে হয়তো খেয়াল করেছেন এক্সপ্রেশন এর শুরুতে r এর ব্যবহার। এর মাধ্যমে একটি স্ট্রিং কে Raw বা শুধুই সাধারণ স্ট্রিং হিসেবে ডিফাইন করা হয়। এতে করে রেগুলার এক্সপ্রেশন এর মধ্যে থাকা "মেটা ক্যারেক্টার" এবং ওই "মেটা ক্যারেক্টারের মতই অন্য সাধারণ ম্যাচ করার ক্যারেক্টার" এর মধ্যে পার্থক্য তৈরি করা হয়।

^ এবং $

আরও দুটি বহুল ব্যবহৃত মেটা ক্যারেক্টার হচ্ছে ^ এবং $. এ দুটোর মাধ্যমে যথাক্রমে কোন একটি স্ট্রিং এর শুরু এবং শেষ চেক করে দেখা হয়। যেমন,

import re

pattern = r"^wr.te$"

if re.match(pattern, "write"):
   print("Match 1")

if re.match(pattern, "wrote"):
   print("Match 2")   

if re.match(pattern, "writer"):
   print("Match 3")

আউটপুট,

Match 1
Match 2

উপরের প্রোগ্রামে r"^wr.te$" এর মাধ্যমে একটি স্ট্রিং যার শুরু এবং শেষ নির্দিষ্ট অর্থাৎ যথাক্রমে w এবং e কিন্তু wr এর পর যেকোনো ক্যারেক্টার থাকতে পারে এবং সেটির পর আবার te থাকতে হবে। তাই write এবং wrote ম্যাচ করেছে।