পাইথনের সাথে রেগুলার এক্সপ্রেশন এর শিক্ষানবিস গাইড

পাইথনের সাথে রেগুলার এক্সপ্রেশন এর শিক্ষানবিস গাইড

আপনি যদি একজন প্রোগ্রামার হন, তাহলে সম্ভাবনা আছে যে আপনি ইতিমধ্যেই জানেন যে রেগুলার এক্সপ্রেশন (রেজেক্স) কি। Regex নিদর্শনগুলি প্রায় প্রতিটি মূলধারার প্রোগ্রামিং ভাষায় প্রয়োগ করা হয়েছে, কিন্তু তবুও, এই প্যাটার্নগুলির শক্তি এবং বহুমুখিতা অধিকাংশ ডেভেলপারদের দ্বারা স্বীকৃত নয়।





এই গাইডটি হল রেগুলার এক্সপ্রেশন এবং কিভাবে আপনি পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজে তাদের ব্যবহার করতে পারেন।





রেগুলার এক্সপ্রেশন কি?

রেগুলার এক্সপ্রেশন হচ্ছে এমন প্যাটার্ন যা ব্যবহারকারীকে টেক্সট ফাইল এবং স্ট্রিংয়ে অক্ষরের সমন্বয় করতে সাহায্য করে। আপনি কমান্ড বা ডকুমেন্টের আউটপুটে একটি নির্দিষ্ট প্যাটার্ন ফিল্টার করতে বা খুঁজে পেতে নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন।





নিয়মিত অভিব্যক্তির বিভিন্ন ব্যবহারের ক্ষেত্রে রয়েছে, সবচেয়ে বিখ্যাত সত্তা লিনাক্সে grep কমান্ড । অন্যান্য অ্যাপ্লিকেশনগুলির মধ্যে রয়েছে তথ্য ফিল্টারিং যেমন একটি ডেটা ডাম্প থেকে ইমেল ঠিকানা এবং ফোন নম্বর বের করা।

অনেক ডেভেলপার নিয়মিত অভিব্যক্তি থেকে দূরে সরে যাওয়ার প্রধান কারণ হল প্যাটার্ন মিলের শক্তি সম্পর্কে সচেতনতার অভাব। কেউ কেউ নিয়মিত অভিব্যক্তিগুলিকে বিভ্রান্তিকর মনে করেন কারণ প্যাটার্নে ব্যবহৃত অক্ষর এবং ক্রমগুলির প্রচুর পরিমাণ।



কারণ যাই হোক না কেন, রেগুলার এক্সপ্রেশন হচ্ছে এবং হবে প্রোগ্রামিং এর অন্যতম গুরুত্বপূর্ণ দিক যা সবার জানা উচিত।

ডিজনি প্লাস হেল্প সেন্টার কোড 83

রেগুলার এক্সপ্রেশন: অক্ষর এবং ক্রম মিলছে

Regex নিজেই একটি সম্পূর্ণ নতুন ভাষা। একটি regex ইঞ্জিন নির্দিষ্ট অর্থ দিয়ে সজ্জিত বেশ কয়েকটি অক্ষরের সমন্বিত নিদর্শন ব্যাখ্যা করে। মৌলিক আক্ষরিক যেমন আলফানিউমেরিক অক্ষর নিজেদের সাথে মেলে। কিন্তু জটিল অক্ষর যেমন $, *, +, {, ইত্যাদি উচ্চতর অর্ডার মিলের ক্ষেত্রে সহায়তা করে।





  1. তারকাচিহ্ন (*): পূর্ববর্তী অক্ষরটি শূন্য বা তার বেশি বার মেলে। চরিত্রটির আক্ষরিক অর্থ হবে 'মৌল গুণিত n বার'। উদাহরণস্বরূপ, যদি রেগুলার এক্সপ্রেশন হয় abc * , মিলিত স্ট্রিং হবে ab, abc, abcc, abccc, abcccc, ইত্যাদি এক্সপ্রেশন [বিসি]* bc, bcbc, bcbc, ইত্যাদি মিলবে।
  2. আরো (+): পূর্ববর্তী চরিত্রটি এক বা একাধিক বার মিলে যায়। এর কাজ + চরিত্র অনুরূপ * , কিন্তু + যদি চরিত্রটি না ঘটে তবে চরিত্রটি প্যাটার্নটি বাদ দেয়। উদাহরণ স্বরূপ, abc + abc, abcc, abccc, ইত্যাদি মিলবে কিন্তু ab নয়।
  3. প্রশ্নবোধক (?): পূর্ববর্তী অক্ষর শূন্য বা এক সময় (গুলি) মেলে। উদাহরণস্বরূপ, প্যাটার্ন abc? শুধুমাত্র ab এবং abc মিলবে।
  4. পাইপ (|): বাইনারি হিসেবে ব্যবহৃত হয় অথবা অপারেটর. পাইপের পূর্ববর্তী এবং সফল অক্ষরগুলির মধ্যে একটির সাথে মেলে। উদাহরণ স্বরূপ, a | খ a বা b মিলবে।
  5. বিন্দু (।): এমন একটি চরিত্রের সাথে মিলে যায় যার পরিচয় অজানা। উদাহরণ স্বরূপ, a.c aac, abc, acc, a2c ইত্যাদি মিলবে।
  6. গাজর (^): প্যাটার্নে প্রথম অক্ষরের সাথে মেলে। উদাহরণ স্বরূপ, ^রা দিয়ে শুরু হওয়া শব্দের সাথে মিলবে আউট যেমন খরগোশ, র্যাকুন এবং এলোমেলো।
  7. ডলার ($): প্যাটার্নের শেষ অক্ষরের সাথে মেলে। উদাহরণ স্বরূপ, একটি ডলার শেষ হওয়া শব্দের সাথে মিলবে একটি যেমন ভ্যান, ড্যান এবং প্ল্যান।
  8. হাইফেন (-): অক্ষরের একটি পরিসীমা নির্ধারণ করতে ব্যবহৃত হয়। উদাহরণ স্বরূপ, [0-9] সমস্ত একক অঙ্কের সাংখ্যিক অক্ষরের সাথে মিলবে।

নিয়মিত অভিব্যক্তি নিদর্শনগুলিতে ব্যবহৃত বিশেষ ক্রমগুলি হল:

  1. প্রতি: স্ট্রিংয়ের শুরুতে যদি সফল অক্ষর উপস্থিত থাকে তাহলে একটি ম্যাচ প্রদান করে। উদাহরণ স্বরূপ, দিয়ে শুরু হওয়া শব্দের সাথে মিলবে দ্য যেমন, তাদের, তারা, ইত্যাদি
  2. খ: যদি কোনো শব্দের শুরুতে বা শেষে অক্ষর পাওয়া যায় তাহলে একটি ম্যাচ ফেরত দেয়। উদাহরণ স্বরূপ, বিএমডি এবং পাগল খ যেমন শব্দের সাথে মিলবে তৈরি এবং যাযাবর যথাক্রমে
  3. বি: একটি শব্দের শুরুতে বা শেষে অক্ষর না পাওয়া গেলে একটি ম্যাচ ফেরত দেয়।
  4. ডি: স্ট্রিংয়ে উপস্থিত সংখ্যাসূচক অক্ষরের সাথে মিলিত হয়। উদাহরণ স্বরূপ, /ডি* 1, 12, 1232 ইত্যাদি সংখ্যার সাথে মিলবে।
  5. ডি: স্ট্রিং-এ অ-অঙ্কের অক্ষর মেলে। /ডি a, b, c, f, ইত্যাদি মিলবে।
  6. গুলি: টেক্সটের একটি হোয়াইটস্পেস অক্ষরের সাথে মেলে।
  7. এস: টেক্সটের একটি অ-হোয়াইটস্পেস অক্ষরের সাথে মেলে।
  8. ভিতরে: যদি স্ট্রিংটিতে আন্ডারস্কোর সহ বর্ণানুক্রমিক অক্ষর থাকে তাহলে একটি ম্যাচ প্রদান করে। উদাহরণ স্বরূপ, ভিতরে a, b, c, d, 1, 2, 3, ইত্যাদি মিলবে।
  9. ভিতরে: যদি স্ট্রিংটিতে বর্ণানুক্রমিক অক্ষর বা আন্ডারস্কোর না থাকে তাহলে একটি ম্যাচ প্রদান করে।
  10. সঙ্গে: একটি স্ট্রিংয়ের শেষে অক্ষর মেলে। উদাহরণ স্বরূপ, শেষ Z শেষ হওয়া শব্দের সাথে মিলবে শেষ যেমন বাঁক, সংশোধন, প্রবণতা, ইত্যাদি

রেগুলার এক্সপ্রেশনের জন্য পাইথন পদ্ধতি

পাইথনে, পুনরায় লাইব্রেরি আপনার প্রোগ্রামগুলিতে রেজেক্স বাস্তবায়নের জন্য প্রয়োজনীয় সমস্ত প্রয়োজনীয় ফাংশন এবং ইউটিলিটি সরবরাহ করে। আপনাকে পাইপ ব্যবহার করে লাইব্রেরি ডাউনলোড করতে হবে না কারণ এটি পাইথন ইন্টারপ্রেটারের সাথে পূর্বেই ইনস্টল করা আছে।





আমদানি করতে পুনরায় পাইথনে লাইব্রেরি, আপনার স্ক্রিপ্টে নিম্নলিখিত কোড যোগ করুন:

import re

লক্ষ্য করুন যে পাইথনে নিয়মিত এক্সপ্রেশন পাস করার সময়, আমরা কাঁচা স্ট্রিং ব্যবহার করি কারণ তারা বিশেষ অক্ষর যেমন ব্যাখ্যা করে না n এবং । টি ভিন্নভাবে।

ম্যাচ()

দ্য re.match () নির্দিষ্ট স্ট্রিংয়ের শুরুতে প্রোগ্রামটি একটি মিল খুঁজে পেলে পাইথনের পদ্ধতি একটি রেজেক্স বস্তু প্রদান করে। এই ফাংশন দুটি মৌলিক যুক্তি নেয়:

re.match(pattern, string)

...কোথায় প্যাটার্ন নিয়মিত প্রকাশ এবং স্ট্রিং যে পাঠ্যটি অনুসন্ধান করা প্রয়োজন।

নীচের কোড স্নিপেটটি দেখুন।

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

দ্য আর স্ট্রিং এর আগে অক্ষর কাঁচা স্ট্রিং।

আউটপুট:

None

পূর্বোক্ত কোডটি ফিরে আসে কোনটিই নয় কারণ শব্দ স্ট্রিংয়ের শুরুতে উপস্থিত ছিলেন না।

যদি কোন ম্যাচ পাওয়া যায়, আপনি ম্যাচটি ব্যবহার করে প্রিন্ট করতে পারেন গ্রুপ () পদ্ধতি যা regex বস্তুর অন্তর্গত।

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

আউটপুট:

Word

দ্য re.search () পদ্ধতি re.match () হিসাবে একই যুক্তি নেয়। যখন ম্যাচ () কেবল স্ট্রিংয়ের শুরুতে উপস্থিত ম্যাচগুলি ফেরত দেয়, অনুসন্ধান () স্ট্রিং এর যেকোন সূচকে পাওয়া ম্যাচগুলো ফেরত দেবে।

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

উল্লেখ্য যে ম্যাচ() এবং অনুসন্ধান () পদ্ধতি শুধুমাত্র একটি প্যাটার্ন ম্যাচ ফিরিয়ে দেবে। উপরে উল্লিখিত কোডে, শব্দ দুবার প্রদর্শিত হয়। কিন্তু অনুসন্ধান () ফাংশন শুধুমাত্র শব্দের প্রথম ঘটনার সাথে মিলবে।

Word

FindAll ()

আপনি ইতিমধ্যে অনুমান করতে পারেন, findall () পদ্ধতিটি স্ট্রিংয়ের প্রতিটি সম্ভাব্য ম্যাচ ফেরত দেয়।

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

একটি regex বস্তু ফেরত দেওয়ার পরিবর্তে, findall () ফাংশন সব মিলের একটি তালিকা প্রদান করে। আপনি একটি ব্যবহার করে তালিকার মাধ্যমে পুনরাবৃত্তি করতে পারেন পাইথনে লুপের জন্য

বিভক্ত ()

যদি আপনি একটি স্ট্রিংকে ডিলিমিটার হিসেবে একটি প্যাটার্ন ব্যবহার করে সাব-স্ট্রিংয়ে বিভক্ত করতে চান, তাহলে বিভক্ত () ফাংশন আপনার প্রয়োজন।

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

আউটপুট:

['This word', 'that', 'this are different.']

উপ ()

দ্য উপ () পদ্ধতি ব্যবহারকারীকে একটি প্যাটার্নের জায়গায় একটি নির্দিষ্ট শব্দ প্রতিস্থাপন করতে দেয়। এটি নিম্নলিখিত যুক্তি লাগে।

re.sub(pattern, replacement, string)

এই কোড স্নিপেট বিবেচনা করুন:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

আউটপুট:

Dave or Harry must be punished.

কম্পাইল ()

দ্য re.compile () পদ্ধতি পুনরায় লাইব্রেরি ব্যবহারকারীকে মেমরিতে রেগুলার এক্সপ্রেশন প্যাটার্নের একটি সংকলিত সংস্করণ সংরক্ষণ করতে দেয়। তারপরে, সংকলিত বস্তুটি ব্যবহার করে, ব্যবহারকারী মিলে যাওয়া নিদর্শনগুলির জন্য নির্দিষ্ট পাঠ্য ডাম্পটি দ্রুত ফিল্টার করতে পারেন।

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

এই ফাংশনটি প্রাথমিকভাবে সংরক্ষণের নিদর্শনগুলির জন্য ব্যবহৃত হয় যা সম্পদ-নিবিড় এবং চালানোর জন্য অনেক সময় প্রয়োজন। একটি বস্তু হিসাবে প্যাটার্নটি সংকলন এবং সংরক্ষণ করা আগে এই সমস্যাটি সমাধান করে।

পাইথনের সাহায্যে Regex এর শক্তি উপভোগ করুন

যখন আপনি টেক্সট ফাইল এবং আউটপুট নিয়ে কাজ করছেন, তখন রেজগেক্স আপনার জন্য একটি দুর্দান্ত হাতিয়ার। আপনি ডকুমেন্টে নির্দিষ্ট প্যাটার্ন ফিল্টার বা প্রতিস্থাপনের জন্য দ্রুত কিছু কোড লিখতে পারেন।

সমস্ত অক্ষর স্মরণ করা এবং সিকোয়েন্সের সাথে মিলে যাওয়া কঠিন হতে পারে যদি আপনি শুধু regex দিয়ে শুরু করেন। নিয়মিত অভিব্যক্তিতে আরও ভাল করার জন্য, অক্ষর, পদ্ধতি এবং ক্রমগুলির একটি তালিকা উল্লেখ করে এবং তারপর অবশ্যই আপনাকে দীর্ঘমেয়াদে সাহায্য করবে।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল উদীয়মান প্রোগ্রামারদের জন্য পাইথন রেগেক্স চিট শীট

পাইথন রেগুলার এক্সপ্রেশনগুলির এই তালিকাটি ব্যবহার করুন যাতে আপনি এই বহুমুখী প্রোগ্রামিং ভাষা ব্যবহার করে আরও ভাল হতে পারেন।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • প্রোগ্রামিং
  • পাইথন
লেখক সম্পর্কে দীপেশ শর্মা(79 নিবন্ধ প্রকাশিত)

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

দীপেশ শর্মার কাছ থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন