পাইথনে রেগুলার এক্সপ্রেশন স্ট্রিং এর জন্য ফ্ল্যাগ

রেগুলার এক্সপ্রেশনের সাথে কাজ করে এমন মেথডগুলির জন্য ঐচ্ছিক প্যারামিটার হিসাবে ফ্ল্যাগ সেট করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:

pythonflags=re.ফ্ল্যাগের_নাম

রেগুলার এক্সপ্রেশন এর জন্য প্রধান ফ্ল্যাগসমূহ

ফ্ল্যাগ উদ্দেশ্য
re.IGNORECASE অক্ষরের কেস উপেক্ষা করা।
re.DOTALL ডট যেকোনো অক্ষরকে নির্দেশ করে, নিউলাইন সহ।
re.I খোঁজাকে কেস-ইনসেনসিটিভ করে তোলে।
re.L বর্তমান ভাষা অনুযায়ী শব্দ খোঁজে। এই ইন্টারপ্রিটেশন আলফাবেটিক গ্রুপ (\w এবং \W) এবং ওয়ার্ড বাউন্ডারি আচরণ (\b এবং \B) কে প্রভাবিত করে।
re.M $ চিহ্ন টেক্সটের যেকোনো লাইনের শেষে খোঁজ করে (শুধুমাত্র টেক্সটের শেষে নয়) এবং ^ চিহ্ন টেক্সটের যেকোনো লাইনের শুরুতে খোঁজ করে (শুধুমাত্র টেক্সটের শুরুতে নয়)।
re.S ডট (.) এর মানকে যেকোনো অক্ষরের সাথে মিলতে পরিবর্তন করে, নিউ লাইন সহ।
re.U ইউনিকোড ক্যারেক্টার সেট অনুসারে অক্ষরগুলির ইন্টারপ্রিটেশন করে। এই ফ্ল্যাগটি \w, \W, \b, \B এর আচরণকে প্রভাবিত করে। পাইথন 3+ এ এই ফ্ল্যাগটি ডিফল্টভাবে সেট থাকে।
re.X রেগুলার এক্সপ্রেশনের মাল্টিলাইন সিনট্যাক্স অনুমতি দেয়। এটি প্যাটার্নের ভিতরের স্পেসগুলিকে উপেক্ষা করে ([] সেটের ভিতরের স্পেস বা ব্যাকস্ল্যাশ দ্বারা এস্কেপ করা স্পেস ছাড়া) এবং আন-এস্কেপড '#' কে কমেন্ট হিসেবে প্রক্রিয়া করে।

উদাহরণ

re.IGNORECASE ফ্ল্যাগ ব্যবহার করে অক্ষরের কেস উপেক্ষা করা যায়। আসুন দেখি কিভাবে এটি করা হয়। এই উদাহরণে রেগুলার এক্সপ্রেশন শুধুমাত্র ছোট হাতের অক্ষর খুঁজে পাবে:

pythontxt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)

print(res)

কোড 실행ের ফলাফল:

python'! ! CCC DDD'

উদাহরণ

এবং এখন মেথডের চতুর্থ প্যারামিটারে re.IGNORECASE ফ্ল্যাগ যোগ করি, তখন রেগুলার এক্সপ্রেশন সব কেসে অক্ষর খুঁজতে শুরু করবে:

pythontxt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)

print(res)

কোড 실행ের ফলাফল:

python'! ! ! !'

উদাহরণ

আসুন রেগুলার এক্সপ্রেশন দিয়ে সব নিউলাইন খুঁজে বের করি:

pythontxt = '''aaa
  bbb'''
res = re.sub('\n', '!', txt)

print(res)

কোড 실행ের ফলাফল:

python'aaa!bbb'

উদাহরণ

কিন্তু, যদি সব অক্ষর প্রতিস্থাপন করতে হয়, তাহলে রেগুলার এক্সপ্রেশনে ডট ব্যবহার করলে নিউলাইনগুলি ক্যাপচার হবে না:

pythontxt = '''aaa
  bbb'''
res = re.sub('.', '!', txt)

print(res)

কোড 실행ের ফলাফল:

python'!!!
!!!'

উদাহরণ

এই ত্রুটি ঠিক করতে, re.DOTALL ফ্ল্যাগ প্রয়োগ করা উচিত:

pythonres = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)

কোড 실행ের ফলাফল:

python'!!!!!!!'

উদাহরণ

প্যারামিটারে একাধিক ফ্ল্যাগও পাঠানো যেতে পারে, তাদের মধ্যে + অপারেটর দিয়ে। আসুন প্রথমে লাইনের শেষের 'a' অক্ষরটি প্রতিস্থাপন করি:

pythontxt = '''
  aaa
  AAA
  aaa'''
res = re.sub('aaa$', '!', txt)

print(res)

কোড 실행ের ফলাফল:

python'''
  aaa
  AAA
  !
'''

উদাহরণ

এখন re.M ফ্ল্যাগ সেট করি:

pythonres = re.sub('aaa$', '!', txt, flags=re.M)
print(res)

কোড 실행ের ফলাফল:

python'''
  !
  AAA
  !
'''

উদাহরণ

আসুন এখন কেস উপেক্ষা করার জন্য আরও একটি ফ্ল্যাগ প্রয়োগ করি:

pythonres = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)

কোড 실행ের ফলাফল:

python'''
  !
  !
  !
'''