regex - python regular expression: re.findall(r"(do|re|mi)+","mimi rere midore") -


मैं समझ नहीं सका क्यों यह नियमित अभिव्यक्ति,

  re.findall (r " इस परिणाम को उत्पन्न करता है,  
  ['मी', 'पुनः' , 'पुनः']   

मेरा अनुमानित परिणाम ['मिमी', 'री', 'मध्य'] ...

हालांकि, जब मैं इस नियमित अभिव्यक्ति का उपयोग करता हूं,

  पुन: फाइनल (r "(?: Do | re | mi) +", "मिमी रीर मिडोर"),   

यह अपेक्षित परिणाम उत्पन्न करता है

क्या आप मुझे दो नियमित अभिव्यक्तियों के बीच अलग बता सकते हैं? धन्यवाद।

अंतर कैप्चरिंग समूह में है कैप्चरिंग फूरुप के साथ, findall () रिटर्न केवल क्या पकड़ा गया था। एक कैप्चरिंग समूह के बिना, पूरे मैच वापस कर दिया जाता है।

आपके पहले उदाहरण में, समूह केवल दो अक्षर दोहराता है, दोहराया या नहीं दूसरे उदाहरण में, पूरे मैच में किसी भी पुनरावृत्ति भी शामिल है।

इस अंतर पर काफी स्पष्ट है:

सभी गैर-अतिव्यापी स्ट्रिंग में पैटर्न के मिलानों को लौटें, जैसे तारों की सूची [एक ?? |] यदि एक या अधिक समूहों के पैटर्न में मौजूद हैं, तो समूहों की एक सूची वापस करें; यह ट्यूपल्स की एक सूची होगी यदि पैटर्न में एक से अधिक समूह हों।

यदि आपका (do | re | mi) + पैटर्न बड़ा का हिस्सा है पैटर्न और आप चाहते हैं कि findall () से केवल पूर्ण दोहराए जाने वाले वर्णों को वापस लौटाएं, पूरे कैपिंग समूह के साथ दो-अक्षर विकल्पों के लिए गैर कैप्चरिंग समूह का उपयोग करें :

  r कुछ उदाहरण पाठ: ((?: Do | re | me) +) '   

Comments

Popular posts from this blog

excel vba - How to delete Solver(SOLVER.XLAM) code -

jsp - Google line chart x-axis shrinks on transition -

java - Reaching JTextField in a DocumentListener -