2008-10-21 15 views
5

Pexpect का उपयोग पायथन में कार्यों को स्वचालित करने के लिए किया जा सकता है (टीसीएल को स्थापित करने की आवश्यकता नहीं है)। इस वर्ग की सबसे सरल दिनचर्या में से एक 'रन()' दिनचर्या है। यह कुंजी के रूप में अपेक्षित प्रश्न पैटर्न का एक शब्दकोश स्वीकार करता है और प्रतिक्रियाओं के रूप में प्रतिक्रियाओं को स्वीकार करता है। उदाहरण के लिएपायथन नियमित अभिव्यक्ति में '(? I) पासवर्ड' का अर्थ क्या है?

pexpect.run ('SCP foo [email protected] :.', घटनाओं = { '(मैं) पासवर्ड?': mypassword})

मुझे लगता है कि आम तौर पर पता है '?' स्ट्रिंग में पिछले शाब्दिक के 0 या 1 घटनाओं को इंगित करने के लिए प्रयोग किया जाता है (नियमित अभिव्यक्तियों के लिए)। हालांकि, यहां पर, यह अर्थ नहीं प्रतीत होता है।

विशेषज्ञों यह क्या है पर टिप्पणी कर सकते हैं?

उत्तर

8

https://docs.python.org/library/re.html#regular-expression-syntax

(? ...) यह एक विस्तार संकेतन (एक है "?" एक "(" अन्यथा कोई महत्व नहीं रह है)। पहले के बाद "?" निर्धारित करता है चरित्र निम्नलिखित । क्या अर्थ और के आगे वाक्य रचना निर्माण है एक्सटेंशन आमतौर पर एक नया समूह नहीं बना सकता हूँ; (? पी ...) इस नियम का एकमात्र अपवाद नहीं है वर्तमान में समर्थित एक्सटेंशन हैं के बाद

।।

(? ILmsux) ( सेट "i", "एल", "एम", "एस", "यू", "एक्स" से एक या अधिक अक्षर।) समूह खाली स्ट्रिंग से मेल खाता है; पत्र पूरे नियमित अभिव्यक्ति के लिए इसी झंडे (re.I, re.L, re.M, re.S, re.U, re.X) ​​की स्थापना की। आप चाहते हैं तो बजाय संकलन() कार्य करने के लिए गुजर एक झंडा तर्क की, नियमित अभिव्यक्ति के हिस्से के रूप झंडे शामिल करने के लिए यह उपयोगी है।

ध्यान दें कि (? एक्स) ध्वज परिवर्तन कैसे अभिव्यक्ति पार्स किया गया है। यह अभिव्यक्ति स्ट्रिंग, या पहले एक या अधिक सफेद स्थान वर्णों के बाद उपयोग किया जाना चाहिए। ध्वज से पहले गैर-व्हाइटस्पेस वर्ण हैं, तो परिणाम अपरिभाषित हैं।

तो इस मामले में स्ट्रिंग एक नियमित अभिव्यक्ति है, और यह केस-असंवेदनशील होने के लिए सेट है।

4

इस अजगर की फिर मॉड्यूल में नियमित अभिव्यक्ति वाक्य रचना में एक विस्तार है। "I" का अर्थ है "अनदेखा करें"। इसका मतलब है कि "पासवर्ड" के लिए एक केस असंवेदनशील खोज की जाती है।

https://docs.python.org/library/re.html#regular-expression-syntax

से

(? ILmsux) (सेट "मैं", "एल", "एम", "एस", "यू", "एक्स" से एक या अधिक पत्र।) समूह खाली स्ट्रिंग से मेल खाता है; पत्र इसी झंडे (re.I, re.L, re.M, re.S, re.U, re.X) ​​पूरे नियमित अभिव्यक्ति के लिए निर्धारित किया है। यदि आप अभिव्यक्ति को ध्वज संकलन() फ़ंक्शन के लिए ध्वज पास करने के बजाय अभिव्यक्ति के हिस्से के रूप में झंडे को शामिल करना चाहते हैं तो यह उपयोगी है।

ध्यान दें कि (? X) ध्वज बदलता है कि अभिव्यक्ति को कैसे पार्स किया गया है। यह अभिव्यक्ति स्ट्रिंग में पहले या एक या अधिक व्हाइटस्पेस वर्णों के बाद उपयोग किया जाना चाहिए। ध्वज से पहले गैर-व्हाइटस्पेस वर्ण हैं, तो परिणाम अपरिभाषित हैं।

संबंधित मुद्दे