पायथन नियमित अभिव्यक्तियों का उपयोग करके आप कैसे True/ a Falseलौटा सकते हैं? सभी पायथन रिटर्न हैं:
<_sre.SRE_Match object at ...>
पायथन नियमित अभिव्यक्तियों का उपयोग करके आप कैसे True/ a Falseलौटा सकते हैं? सभी पायथन रिटर्न हैं:
<_sre.SRE_Match object at ...>
जवाबों:
Matchऑब्जेक्ट हमेशा सत्य होते हैं, और Noneअगर कोई मिलान नहीं है, तो लौटा दिया जाता है। सिर्फ ट्रूनेस के लिए टेस्ट करें।
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मान की आवश्यकता तब होती है जब सशर्त विवरण में बूलियन अंकगणितीय ऑपरेशन होता है। उदाहरण: if (re.search ("a", "abc") & True):
&एक बिटवाइज़ ऑपेरशन है। andहोगा बूलियन आपरेशन।
(re.search("a","abc") and True)
boolपाठक के लिए प्रोग्रामर का इरादा स्पष्ट करने में रैपिंग ।
इग्नासियो वाज़केज़-अब्राम्स सही है। लेकिन विस्तृत करने के लिए , या 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()एक मैच की जांच करता है , जबकि स्ट्रिंग में कहीं भी मैच की जांच करता है (यह वही है जो पर्ल डिफ़ॉल्ट रूप से करता है)। उल्लेख इस