কম্পিউটার টিউটোরিয়াল

পাইথনে রেগুলার এক্সপ্রেশন উদাহরণসহ


রেগুলার এক্সপ্রেশন হলো একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা দিয়ে চেক করা হয় একটি দिये गये ক্যারেক্টার সিকোয়েন্স (স্ট্রিং) এ কোনো প্যাটার্ন আছে কিনা।

রেগুলার এক্সপ্রেশন বা Regex হলো ক্যারেক্টারların একটি সিকোয়েন্স যা ব্যবহার করা হয় একটি স্ট্রিং নির্দিষ্ট সার্চ প্যাটার্ন ধারণ করছে কিনা চেক করার জন্য।

RegEx মডিউল

RegEx মডিউল ব্যবহার করতে, পাইথন বিল্ট-ইন প্যাকেজ re দিয়ে আসে, যা রেগুলার এক্সপ্রেশন নিয়ে কাজ করার জন্য প্রয়োজন। RegEx মডিউল ব্যবহার করতে, শুধু re মডিউল ইম্পোর্ট করুন।

import re

উদাহরণ

import re
txt = "Use of python in Machine Learning"
x = re.search("^Use.*Learning$", txt)
if (x):
    print("YES! We have a match!")
else:
    print("No match")

আউটপুট

YES! We have a match!

RegEx ফাংশন

re মডিউল কিছু ফাংশন অফার করে যা আমাদেরকে একটি স্ট্রিং সার্চ করতে দেয় ম্যাচের জন্য।

ফাংশন বিবরণ
findall সব ম্যাচ ধারণকারী একটি লিস্ট রিটার্ন করে
search স্ট্রিং-এ যেকোনো জায়গায় ম্যাচ পাওয়া গেলে একটি Match অবজেক্ট রিটার্ন করে
split প্রতিটি ম্যাচে স্ট্রিংটি Сп্লিট হয়ে একটি লিস্ট রিটার্ন করে
sub এক বা একাধিক ম্যাচকে একটি স্ট্রিং দিয়ে রিপ্লেস করে

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

RegEx-এ মেটাক্যারেক্টার হলো স্পেশাল মেনিংवाले ক্যারেক্টার।

ক্যারেক্টার বিবরণ উদাহরণ
[] ক্যারেক্টার সেট "[a-m]"
\ স্পেশাল সিকোয়েন্স সিগন্যাল করে, স্পেশাল ক্যারেক্টার এস্কেপ করার জন্যও ব্যবহৃত হয় "\d"
. নিউলাইন ক্যারেক্টার ছাড়া যেকোনো ক্যারেক্টার "he..o"
^ শুরু হয় "^Hello"
$ শেষ হয় "World$"
* শূন্য বা অধিক ঘটনা "aix*"
+ এক বা অধিক ঘটনা "aix+"
{} নির্দিষ্ট সংখ্যক ঘটনা "a|{2}"
| या/অথবা "short|long"
() ক্যাপচার এবং গ্রুপ  

স্পেশাল সিকোয়েন্স

RegEx-এ স্পেশাল সিকোয়েন্স হলো \ এবং তারপর নিচের ক্যারেক্টারগুলোর একটি, যার একটি স্পেশাল মেনিং রয়েছে:

ক্যারেক্টার বিবরণ উদাহরণ
\A স্ট্রিংয়ের শুরুতে নির্দিষ্ট ক্যারেক্টার থাকলে ম্যাচ রিটার্ন করে "\APyt"
\b শব্দের শুরুতে বা শেষে নির্দিষ্ট ক্যারেক্টার থাকলে ম্যাচ রিটার্ন করে r"\bPython" r"world\b"
\B নির্দিষ্ট ক্যারেক্টার উপস্থিত থাকলে ম্যাচ রিটার্ন করে, কিন্তু শব্দের শুরুতে (বা শেষে) নয় r"\BPython" r"World\B"
\d স্ট্রিংয়ে ডিজিট থাকলে ম্যাচ রিটার্ন করে "\d"
\D স্ট্রিং ডিজিট না থাকলে ম্যাচ রিটার্ন করে "\D"
\s স্ট্রিং হোয়াইটস্পেস ক্যারেক্টার থাকলে ম্যাচ রিটার্ন করে "\s"
\S স্ট্রিং হোয়াইটস্পেস ক্যারেক্টার না থাকলে ম্যাচ রিটার্ন করে "\S"
\w স্ট্রিং ওয়ার্ড ক্যারেক্টার (a-z, 0-9, _) থাকলে ম্যাচ রিটার্ন করে "\w"
\W স্ট্রিং ওয়ার্ড ক্যারেক্টার না থাকলে ম্যাচ রিটার্ন করে "\W"
\Z স্ট্রিংয়ের শেষে নির্দিষ্ট ক্যারেক্টার থাকলে ম্যাচ রিটার্ন করে "world\Z"

সেটস

RegEx-এ একটি সেট হলো স্কয়ার ব্র্যাকেট [] এর মধ্যে একটি ক্যারেক্টার সেট যার কিছু স্পেশাল মেনিং রয়েছে।

সেট বিবরণ
[raj] নির্দিষ্ট ক্যারেক্টারগুলোর যেকোনো একটি (a, r বা j) উপস্থিত থাকলে ম্যাচ রিটার্ন করে
[a-r] a এবং r-এর মধ্যে অ্যালফাবেটিক্যালি যেকোনো लोয়ার কেস লেটারের জন্য ম্যাচ রিটার্ন করে
[^raj] r, a এবং j ছাড়া যেকোনো ক্যারেক্টারের জন্য ম্যাচ রিটার্ন করে
[0123] নির্দিষ্ট কোনো স্পে...
[0-9] 0 এবং 9-এর মধ্যে যেকোনো ডিজিটের জন্য ম্যাচ রিটার্ন করে
[0-3][0-8] 00 এবং 38-এর মধ্যে যেকোনো টু-ডিজিট নম্বারের জন্য ম্যাচ রিটার্ন করে
[a-zA-Z] a থেকে z বা A থেকে Z পর্যন্ত অ্যালফাবেটিক্যালি যেকোনো ক্যারেক্টারের জন্য ম্যাচ রিটার্ন করে
[+] স্ট্রিং-এ যেকোনো + ক্যারেক্টারের জন্য ম্যাচ রিটার্ন করে

 

উদাহরণ - findall()

findall() ফাংশন সব ম্যাচ ধারণকারী একটি লিস্ট রিটার্ন করে।

# Print a list of all matches ("in") from a text
import re
txt = "Use of python in Machine Learning"
x = re.findall("in", txt)
print(x)

আউটপুট

['in', 'in', 'in']

উপরের আউটপুটে সনির্দিষ্ট ক্রমে পাওয়া সব ম্যাচ ধারণকারী লিস্ট দেখানো হয়েছে। তবে, কোনো ম্যাচ না পাওয়া গেলে একটি খালি লিস্ট দেখানো হয়।

আপনার উপরের প্রোগ্রামের নিচের লাইনটি পরিবর্তন করুন, "pattern" যা টেক্সট বা স্ট্রিং-এ নেই।

x = re.findall("Hello", txt)

আউটপুট

[]

উদাহরণ - search() ফাংশন

search() ফাংশন স্ট্রিংটি সার্চ করে এবং ম্যাচ পাওয়া গেলে একটি ম্যাচ অবজেক্ট রিটার্ন করে।

তবে, একাধিক ম্যাচ থাকলে, শুধু ম্যাচের প্রথম ঘটনা রিটার্ন করা হবে।

import re
txt = "Python is one of the most popular languages around the world"
searchObj = re.search("\s", txt)
print("The first white-space character is located in position: ", searchObj.start())

আউটপুট

The first white-space character is located in position: 6

তবে, কোনো ম্যাচ না পাওয়া গেলে None রিটার্ন করা হবে।

উদাহরণ - split() ফাংশন

RegEx-এ split() ফাংশন একটি লিস্ট রিটার্ন করে যেখানে স্ট্রিংটি প্রতিটি ম্যাচে স্প্লিট হয়েছে:

# Split at each white-space character
import re
string = "Python is one of the most popular languages around the world"
searchObj = re.split("\s", string)
print(searchObj)

ফলাফল

['Python', 'is', 'one', 'of', 'the', 'most', 'popular', 'languages', 'around', 'the', 'world']

উদাহরণ - sub() ফাংশন

RegEx-এ sub() ফাংশন হলো ম্যাচকে আপনার পছন্দের টেক্সট দিয়ে রিপ্লেস করা।

# Replace every white-space in the string with _:
import re
string = "Python is one of the most popular language around the world"
searchObj = re.sub("\s", "_", string)
print(searchObj)

ফলাফল

Python_is_one_of_the_most_popular_language_around_the_world

ম্যাচ অবজেক্ট

RegEx-এ একটি ম্যাচ অবজেক্ট হলো সার্চ এবং রেজাল্ট সম্পর্কে তথ্য ধারণকারী একটি অবজেক্ট। কোনো ম্যাচ না পাওয়া গেলে None রিটার্ন করা হয়।

উদাহরণ - একটি স্ট্রিং সার্চ করুন এবং ম্যাচ অবজেক্ট রিটার্ন করুন।

import re
string = "Python is one of the most popular language around the world"
searchObj = re.search("on", string)
print(searchObj)

ফলাফল

<_sre.SRE_Match object; span=(4, 6), match='on'>

ম্যাচ অবজেক্টের প্রোপার্টি এবং মেথড রয়েছে যা সার্চ এবং রেজাল্ট সম্পর্কে তথ্য রিট্রিভ করতে ব্যবহৃত হয়।

  • .span() – ম্যাচ পাওয়া গেলে শুরুর এবং শেষ পজিশন ধারণকারী একটি টাপল রিটার্ন করে।

  • .string – ফাংশনে পাস করা স্ট্রিং রিটার্ন করে।

  • .group() – স্ট্রিংয়ের সেই অংশ রিটার্ন করে যেখানে ম্যাচ ছিল।

উদাহরণ - স্ট্রিংয়ের সেই অংশ প্রিন্ট করুন যেখানে ম্যাচ ছিল।

# Looks for any words that starts with an upper case "P":
import re
string = "Python is one of the most popular language around the world"
searchObj = re.search(r"\bP\w+", string)
print(searchObj)

ফলাফল

<_sre.SRE_Match object; span=(0, 6), match='Python'>

  1. জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশন মডিফায়ার উদাহরণসহ ব্যাখ্যা

  2. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে হোয়াইটস্পেস ম্যাচ করার পদ্ধতি

  3. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে নন-ওয়ার্ড ক্যারেক্টার ম্যাচ করার পদ্ধতি

  4. পাইথন রেগুলার এক্সপ্রেশন ব্যবহার করে ওয়ার্ড ম্যাচ করার পদ্ধতি