পাইথনে নিয়মিত এক্সপ্রেশন পরিচিতি
নিয়মিত এক্সপ্রেশন হল জটিল খোঁজ এবং প্রতিস্থাপনের (বা শুধু খোঁজের) জন্য কমান্ড। এগুলি খুব আকর্ষণীয় কাজ করতে দেয়, কিন্তু দুর্ভাগ্যবশত, আয়ত্ত করা বেশ কঠিন।
পাইথনে নিয়মিত এক্সপ্রেশন নিয়ে কাজ শুরু করতে, আমাদের একটি বিশেষ মডিউল re ইম্পোর্ট করতে হবে:
import re
re মডিউলটিতে নিয়মিত এক্সপ্রেশন নিয়ে কাজ করার জন্য তৈরি পদ্ধতিগুলি অন্তর্ভুক্ত আছে। একটি নিয়মিত এক্সপ্রেশন হল কমান্ডের একটি সেট এবং এটি দুই ধরনের অক্ষর নিয়ে গঠিত: যেগুলো নিজেদেরকে নির্দেশ করে এবং যেগুলো কমান্ড-অক্ষর, যাদের বিশেষ অক্ষর বলা হয়।
নিয়মিত এক্সপ্রেশনের সাথে পরিচয় sub পদ্ধতির উদাহরণ দিয়ে শুরু করাই ভালো, যা স্ট্রিংয়ে প্রতিস্থাপনের জন্য ব্যবহার করা হয়। পদ্ধতিটি প্রথম প্যারামিটার হিসেবে কী পরিবর্তন করতে হবে তা নেয়, দ্বিতীয়টি হিসেবে কী দিয়ে পরিবর্তন করতে হবে তা নেয়। তৃতীয় প্যারামিটারে আমরা সেই স্ট্রিংটি নির্দিষ্ট করি যেখানে পরিবর্তন করতে হবে। চতুর্থ ঐচ্ছিক প্যারামিটারে আমরা পরিবর্তনের সংখ্যা নির্দিষ্ট করি। এই পদ্ধতি ব্যবহার করে সবচেয়ে সহজ প্রতিস্থাপনটি দেখতে এইরকম হবে:
res = re.sub('a', '!', 'bab')
print(res) # আউটপুট দেবে 'b!b'
আপনি লক্ষ্য করেছেন, নিয়মিত এক্সপ্রেশনে অক্ষরগুলি নিজেদেরকে নির্দেশ করে। সংখ্যার ক্ষেত্রেও একই কথা প্রযোজ্য। আসুন 2 সংখ্যাটিকে ! দিয়ে প্রতিস্থাপন করি:
res = re.sub('2', '!', '12abc3')
print(res) # আউটপুট দেবে '1!abc3'
কিন্তু একটি বিন্দু একটি বিশেষ অক্ষর এবং এটি যেকোনো অক্ষর নির্দেশ করে। পরের উদাহরণে আসুন এইরকম একটি প্যাটার্ন অনুযায়ী সাবস্ট্রিং খুঁজে বের করি: অক্ষর 'x', তারপর যেকোনো অক্ষর, তারপর আবার অক্ষর 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # আউটপুট দেবে '! eee'
একটি স্ট্রিং দেওয়া আছে:
txt = 'ahb acb aeb aeeb adcb axeb'
একটি নিয়মিত এক্সপ্রেশন লিখুন যা 'ahb', 'acb', 'aeb' স্ট্রিংগুলি খুঁজে পাবে এই প্যাটার্ন অনুযায়ী: অক্ষর 'a', যেকোনো অক্ষর, অক্ষর 'b'।
একটি স্ট্রিং দেওয়া আছে:
txt = 'aba aca aea abba adca abea'
একটি নিয়মিত এক্সপ্রেশন লিখুন যা 'abba', 'adca', 'abea' স্ট্রিংগুলি খুঁজে পাবে এই প্যাটার্ন অনুযায়ী: অক্ষর 'a', 2 যেকোনো অক্ষর, অক্ষর 'a'।
একটি স্ট্রিং দেওয়া আছে:
txt = 'aba aca aea abba adca abea'
একটি নিয়মিত এক্সপ্রেশন লিখুন যা 'abba' এবং 'abea' স্ট্রিংগুলি খুঁজে পাবে, 'adca' কে ধরবে না।