পাইথন নিয়মিত এক্সপ্রেশন সত্য / মিথ্যা প্রত্যাবর্তন করে


114

পাইথন নিয়মিত এক্সপ্রেশন ব্যবহার করে আপনি কীভাবে True/ Falseফেরত পেতে পারেন ? সমস্ত পাইথন রিটার্ন হ'ল:

<_sre.SRE_Match object at ...>

উত্তর:


140

Matchবস্তু সর্বদা সত্য, এবং Noneকোনও মিল না থাকলে ফিরে আসে returned শুধু সত্যতার জন্য পরীক্ষা।

if re.match(...):

21
স্ট্রিংয়ের শুরুর অংশটি যদি নিয়মিত প্যাটার্নের সাথে মেলে তবে পুনরায় ম্যাচ (...) সত্য হবে। যখন অনুসন্ধান স্ট্রিংয়ের যে কোনও জায়গায় প্যাটার্নটি নিশ্চিত করবে।
ইউ শেন

8
if re.match(...) is None:পরিবর্তে এটি ব্যবহার করা আরও আকাঙ্ক্ষিত হতে পারে
নিউক্লিয়ারপিয়ন

দুঃখিত, আপনি আপনার উত্তরে মন্তব্যগুলি সম্বোধন করেছেন? এটা আমার কাছে অস্পষ্ট, আপনি কি স্পষ্ট করে বলতে চান?
চার্লি পার্কার

2
আমি জিজ্ঞাসা করতে পারি কেনre এইভাবে ডিজাইন করা হয়েছে? যদি matchবস্তুগুলি সর্বদা সত্য হয় Trueতবে উত্তরটি সত্য বা মিথ্যা কিনা যাই হোক না কেন আমাদের সর্বদা এটি জানা থাকা উচিত কেন এটি কেবল প্রথম স্থানে ফিরে আসে না ?
ytu

1
@ আইটু: কারণ তখন আপনি আপনার যা যা প্রয়োজন তা করতে পারেন
Ignacio Vazquez-Abram

149

আপনার যদি সত্যিই প্রয়োজন হয় Trueবা False, কেবল ব্যবহার করুনbool

>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False

অন্যান্য উত্তরগুলি যেমন নির্দেশ করেছে, আপনি যদি এটি কেবল একটি ifবা একটি শর্ত হিসাবে ব্যবহার করে থাকেন তবে আপনি whileমোড়ানো না রেখে সরাসরি ব্যবহার করতে পারেনbool()


1
boolযখন শর্তাধীন বিবৃতিতে বুলিয়ান পাটিগণিত অপারেশন থাকে তখন মানটি প্রয়োজন। উদাহরণস্বরূপ: যদি (পুনরায় অনুসন্ধান ("এ", "এবিসি") এবং সত্য):
এজাত সুহরদী

2
@AizzatSuhardi, &একটি হল , bitwise operaration। andহবে বুলিয়ান অপারেশন।
জন লা রোয়

1
ধন্যবাদ @ জনলআরউই সংশোধন:(re.search("a","abc") and True)
আইজত সুহরদী

এটি কীভাবে ইগ্যাসিওর উত্তর থেকে আলাদা?
চার্লি পার্কার

2
মোড়কের boolমাধ্যমে প্রোগ্রামারটির উদ্দেশ্যটি পাঠকের কাছে পরিষ্কার হয়ে যায়।
গিলহর্ম সালোম é

10

Ignacio Vazquez-Abram সঠিক। তবে বিশদভাবে বলতে গেলে re.match()তা ফেরত আসবে None, যা মূল্যায়ন করে Falseবা কোনও ম্যাচ অবজেক্ট, যা সর্বদা Trueতিনি যেমন বলেছিলেন তেমন থাকবে । আপনার নিয়মিত প্রকাশের সাথে মেলে এমন অংশ (গুলি) সম্পর্কে আপনি যদি কেবল তথ্য চান তবে আপনার ম্যাচের অবজেক্টের বিষয়বস্তুগুলি পরীক্ষা করে দেখতে হবে।


6

এটি করার একটি উপায় কেবলমাত্র রিটার্নের মানের বিরুদ্ধে পরীক্ষা করা। কারণ আপনি এটি পাওয়ার <_sre.SRE_Match object at ...>অর্থ এটি সত্যের মূল্যায়ন করবে। যখন নিয়মিত এক্সপ্রেশন মেলে না আপনি ফিরতি মান হবেনা, যা মিথ্যা হিসাবে মূল্যায়ন করে।

import re

if re.search("c", "abcdef"):
    print "hi"

উত্পাদন hiআউটপুট।


আপনি সর্বদা একটি ফেরতের মূল্য পান; Noneযদি কোনও কিছু স্পষ্টভাবে প্রত্যাবর্তিত না হয় তবে এটি ডিফল্ট।
ইগনাসিও ওয়াজকেজ-আব্রামস

ধন্যবাদ - এটি সংশোধন করা হয়েছে। আমি আরআরপিএলে যা দেখলাম তা দিয়েই চলছিলাম।
গ্যাভিন অ্যান্ডেরেগ

4

আমার পদ্ধতিটি এখানে:

import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))

1
p = re.comp il e (r'hi ') :
ক্লে

হ্যাঁ এবং এটি "মিথ্যা" ফেরত দেয়
ইউফোস

যদি আপনি পরিবর্তন matchকরতে search, এটা কি সত্যি ফিরে আসবেন
alofgran

1

আপনি ব্যবহার করতে পারেন re.match()বা re.search()। পাইথন নিয়মিত অভিব্যক্তির ভিত্তিতে দুটি পৃথক আদিম ক্রিয়াকলাপ সরবরাহ করে: re.match()স্ট্রিংয়ের শুরুতে re.search()ম্যাচের জন্য চেক করে, স্ট্রিংয়ের যে কোনও জায়গায় ম্যাচের জন্য পরীক্ষা করে (এটি পার্ল ডিফল্টরূপে করে does এটি উল্লেখ করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.