পাইথনে রেগুলার এক্সপ্রেশন স্ট্রিং এর জন্য ফ্ল্যাগ
রেগুলার এক্সপ্রেশনের সাথে কাজ করে এমন মেথডগুলির জন্য ঐচ্ছিক প্যারামিটার হিসাবে ফ্ল্যাগ সেট করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:
flags=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 ফ্ল্যাগ ব্যবহার করে অক্ষরের কেস উপেক্ষা করা যায়। আসুন দেখি কিভাবে এটি করা হয়। এই উদাহরণে রেগুলার এক্সপ্রেশন শুধুমাত্র ছোট হাতের অক্ষর খুঁজে পাবে:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! ! CCC DDD'
উদাহরণ
এবং এখন মেথডের চতুর্থ প্যারামিটারে re.IGNORECASE ফ্ল্যাগ যোগ করি, তখন রেগুলার এক্সপ্রেশন সব কেসে অক্ষর খুঁজতে শুরু করবে:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
কোড 실행ের ফলাফল:
'! ! ! !'
উদাহরণ
আসুন রেগুলার এক্সপ্রেশন দিয়ে সব নিউলাইন খুঁজে বের করি:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'aaa!bbb'
উদাহরণ
কিন্তু, যদি সব অক্ষর প্রতিস্থাপন করতে হয়, তাহলে রেগুলার এক্সপ্রেশনে ডট ব্যবহার করলে নিউলাইনগুলি ক্যাপচার হবে না:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'!!!
!!!'
উদাহরণ
এই ত্রুটি ঠিক করতে, re.DOTALL ফ্ল্যাগ প্রয়োগ করা উচিত:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
কোড 실행ের ফলাফল:
'!!!!!!!'
উদাহরণ
প্যারামিটারে একাধিক ফ্ল্যাগও পাঠানো যেতে পারে, তাদের মধ্যে + অপারেটর দিয়ে। আসুন প্রথমে লাইনের শেষের 'a' অক্ষরটি প্রতিস্থাপন করি:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa$', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'''
aaa
AAA
!
'''
উদাহরণ
এখন re.M ফ্ল্যাগ সেট করি:
res = re.sub('aaa$', '!', txt, flags=re.M)
print(res)
কোড 실행ের ফলাফল:
'''
!
AAA
!
'''
উদাহরণ
আসুন এখন কেস উপেক্ষা করার জন্য আরও একটি ফ্ল্যাগ প্রয়োগ করি:
res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)
কোড 실행ের ফলাফল:
'''
!
!
!
'''