পাইথন রেগুলার এক্সপ্রেশনে [ ] এর ভিতরে হাইফেন
হাইফেনও [ ] এর ভিতরে একটি বিশেষ চরিত্র
(কিন্তু বাইরে - নয়)। যদি আপনার হাইফেন নিজেই作为一个 চরিত্র হিসাবে প্রয়োজন হয় - তবে সেটিকে সেখানে রাখুন,
যেখানে এটি একটি গ্রুপ বিভাজক হিসাবে গৃহীত হবে না।
এটি কেন গুরুত্বপূর্ণ: আপনি নিজেই লক্ষ্য না করেই একটি চরিত্র গ্রুপ তৈরি করতে পারেন। উদাহরণস্বরূপ,
এভাবে - '[:-@]' - আপনি ভাবছেন যে আপনি কোলন, হাইফেন এবং অ্যাট চিহ্ন নির্বাচন করছেন, কিন্তু实际上
: এবং @ এর মধ্যবর্তী চরিত্রগুলির একটি গ্রুপ তৈরি হয়। এই গ্রুপে নিম্নলিখিত চরিত্রগুলি অন্তর্ভুক্ত:
? < = > :
সেগুলো从哪里来的? ASCII টেবিল থেকে - কোলনের নম্বর অ্যাট চিহ্নের চেয়ে কম - এবং একটি গ্রুপ তৈরি হয়। অর্থাৎ সমস্ত গ্রুপ ASCII টেবিল অনুসারে তৈরি হয় (ইচ্ছে করলে এটি ব্যবহার করা যেতে পারে)।
এটির সাথে কীভাবে应对 করুন: হাইফেন চরিত্রটিকে সেখানে রাখুন
যেখানে এটি নিশ্চিতভাবে একটি গ্রুপ চরিত্র হিসাবে গৃহীত হবে না, উদাহরণস্বরূপ, শুরুতে বা
শেষে (অর্থাৎ [ এর পরে বা ] এর আগে)।
আপনি হাইফেনকে এস্কেপও করতে পারেন - তখন
এটি অবস্থান নির্বিশেষে নিজেকে বোঝাবে।
উদাহরণস্বরূপ, [:-@] এর পরিবর্তে
[:\-@] লিখুন - এবং তখন আর গ্রুপ হবে না,
বরং তিনটি চরিত্র থাকবে - কোলন,
হাইফেন এবং অ্যাট চিহ্ন @।
উদাহরণ
নিম্নলিখিত উদাহরণে অনুসন্ধান প্যাটার্নটি是这样的:
অঙ্ক 1, তারপর 'a' থেকে 'z' পর্যন্ত অক্ষর,
তারপর অঙ্ক 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a-z]2', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! 1-2 ! !'
উদাহরণ
এখন আসুন হাইফেনকে এস্কেপ করি। এর
ফলাফল অনুসন্ধান প্যাটার্নটি是这样的: অঙ্ক
1, তারপর 'a' অক্ষর, বা
হাইফেন, বা 'z' অক্ষর, তারপর অঙ্ক
2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a\-z]2', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! ! 1c2 !'
উদাহরণ
এটি এস্কেপ না করেই শুধু হাইফেনের অবস্থান পরিবর্তন করা যেতে পারে:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[az-]2', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! ! 1c2 !'
উদাহরণ
নিম্নলিখিত উদাহরণে অনুসন্ধান প্যাটার্নটি是这样的:
প্রথম চরিত্রটি是小写 অক্ষর বা
হাইফেন '-', তারপর দুটি 'x' অক্ষর
:
txt = 'axx Axx -xx @xx'
res = re.sub('[a-z-]xx', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! Axx ! @xx'
উদাহরণ
নিম্নলিখিত উদাহরণে অনুসন্ধান প্যাটার্নটি是这样的:
প্রথম চরিত্রটি是小写, বড়
অক্ষর বা হাইফেন '-', তারপর দুটি 'x' অক্ষর
:
txt = 'axx Axx -xx @xx'
res = re.sub('[a-zA-Z-]xx', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! ! ! @xx'
উদাহরণ
হাইফেনকে দুটি গ্রুপের মধ্যে রাখা যেতে পারে - সেখানে এটি নিশ্চিতভাবে আরেকটি গ্রুপ তৈরি করবে না:
txt = 'axx 9xx -xx @xx'
res = re.sub('[a-z-0-9]xx', '!', txt)
print(res)
কোড 실행ের ফলাফল:
'! ! ! @xx'
ব্যবহারিক সমস্যা
একটি স্ট্রিং দেওয়া হয়েছে:
txt = 'xaz xBz xcz x-z x@z'
নিম্নলিখিত প্যাটার্ন অনুযায়ী সমস্ত স্ট্রিং খুঁজুন:
'x' অক্ষর, বড় বা ছোট
অক্ষর বা হাইফেন, 'z' অক্ষর।
একটি স্ট্রিং দেওয়া হয়েছে:
txt = 'xaz x$z x-z xcz x+z x%z x*z'
নিম্নলিখিত প্যাটার্ন অনুযায়ী সমস্ত স্ট্রিং খুঁজুন:
'x' অক্ষর, তারপর হয় ডলার, বা
হাইফেন বা প্লাস, তারপর 'z' অক্ষর।