উত্তর:
Matchবস্তু সর্বদা সত্য, এবং Noneকোনও মিল না থাকলে ফিরে আসে returned শুধু সত্যতার জন্য পরীক্ষা।
if re.match(...):
if re.match(...) is None:পরিবর্তে এটি ব্যবহার করা আরও আকাঙ্ক্ষিত হতে পারে
re এইভাবে ডিজাইন করা হয়েছে? যদি matchবস্তুগুলি সর্বদা সত্য হয় Trueতবে উত্তরটি সত্য বা মিথ্যা কিনা যাই হোক না কেন আমাদের সর্বদা এটি জানা থাকা উচিত কেন এটি কেবল প্রথম স্থানে ফিরে আসে না ?
আপনার যদি সত্যিই প্রয়োজন হয় Trueবা False, কেবল ব্যবহার করুনbool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
অন্যান্য উত্তরগুলি যেমন নির্দেশ করেছে, আপনি যদি এটি কেবল একটি ifবা একটি শর্ত হিসাবে ব্যবহার করে থাকেন তবে আপনি whileমোড়ানো না রেখে সরাসরি ব্যবহার করতে পারেনbool()
boolযখন শর্তাধীন বিবৃতিতে বুলিয়ান পাটিগণিত অপারেশন থাকে তখন মানটি প্রয়োজন। উদাহরণস্বরূপ: যদি (পুনরায় অনুসন্ধান ("এ", "এবিসি") এবং সত্য):
&একটি হল , bitwise operaration। andহবে বুলিয়ান অপারেশন।
(re.search("a","abc") and True)
boolমাধ্যমে প্রোগ্রামারটির উদ্দেশ্যটি পাঠকের কাছে পরিষ্কার হয়ে যায়।
Ignacio Vazquez-Abram সঠিক। তবে বিশদভাবে বলতে গেলে re.match()তা ফেরত আসবে None, যা মূল্যায়ন করে Falseবা কোনও ম্যাচ অবজেক্ট, যা সর্বদা Trueতিনি যেমন বলেছিলেন তেমন থাকবে । আপনার নিয়মিত প্রকাশের সাথে মেলে এমন অংশ (গুলি) সম্পর্কে আপনি যদি কেবল তথ্য চান তবে আপনার ম্যাচের অবজেক্টের বিষয়বস্তুগুলি পরীক্ষা করে দেখতে হবে।
এটি করার একটি উপায় কেবলমাত্র রিটার্নের মানের বিরুদ্ধে পরীক্ষা করা। কারণ আপনি এটি পাওয়ার <_sre.SRE_Match object at ...>অর্থ এটি সত্যের মূল্যায়ন করবে। যখন নিয়মিত এক্সপ্রেশন মেলে না আপনি ফিরতি মান হবেনা, যা মিথ্যা হিসাবে মূল্যায়ন করে।
import re
if re.search("c", "abcdef"):
print "hi"
উত্পাদন hiআউটপুট।
Noneযদি কোনও কিছু স্পষ্টভাবে প্রত্যাবর্তিত না হয় তবে এটি ডিফল্ট।
আপনি ব্যবহার করতে পারেন re.match()বা re.search()। পাইথন নিয়মিত অভিব্যক্তির ভিত্তিতে দুটি পৃথক আদিম ক্রিয়াকলাপ সরবরাহ করে: re.match()স্ট্রিংয়ের শুরুতে re.search()ম্যাচের জন্য চেক করে, স্ট্রিংয়ের যে কোনও জায়গায় ম্যাচের জন্য পরীক্ষা করে (এটি পার্ল ডিফল্টরূপে করে does এটি উল্লেখ করুন