मुझे पता नहीं है कि आप गणित में गणित या अन्य गणना कर सकते हैं। अगर वहां एक रेगेक्स इंजन है जो इसका समर्थन करता है, तो यह वास्तव में निफ्टी होगा! लेकिन मेरी समझ यह है कि रेगेक्स इंजन को अत्यधिक धीमा किए बिना व्यावहारिक नहीं होगा।
re.sub(pattern, repl, string[, count, flags])
वापसी स्ट्रिंग प्रतिस्थापन द्वारा स्ट्रिंग में पैटर्न के सबसे बाईं ओर गैर-अतिव्यापी घटनाओं की जगह द्वारा प्राप्त repl। यदि पैटर्न नहीं मिला है, स्ट्रिंग अपरिवर्तित लौटा दी गई है। प्रतिलिपि एक स्ट्रिंग या एक समारोह हो सकता है; यदि यह एक स्ट्रिंग है, तो इसमें बैकस्लैश से बचने के लिए संसाधित किया जाता है। यही है, \ n को एक एकल न्यूलाइन वर्ण में परिवर्तित किया गया है, \ r को लाइनफीड में परिवर्तित किया गया है, और बहुत आगे। अज्ञात भागने जैसे \ j अकेले रह गए हैं। बैक्रेरेंस, जैसे कि \ 6, को पैटर्न में समूह 6 द्वारा मिलान किए गए सबस्ट्रिंग के साथ प्रतिस्थापित किया गया है। उदाहरण के लिए:
>>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',
... r'static PyObject*\npy_\1(void)\n{',
... 'def myfunc():')
'static PyObject*\npy_myfunc(void)\n{'
तो repl एक समारोह है, यह पैटर्न के हर गैर-अतिव्यापी घटना के लिए कहा जाता है। फ़ंक्शन एक एकल मिलान ऑब्जेक्ट तर्क लेता है, और प्रतिस्थापन स्ट्रिंग देता है। उदाहरण के लिए:
>>> def dashrepl(matchobj):
... if matchobj.group(0) == '-': return ' '
... else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'
>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)
'Baked Beans & Spam'
पैटर्न एक स्ट्रिंग या एक आरई वस्तु हो सकता है।
वैकल्पिक तर्क गणना पैटर्न की अधिकतम संख्या प्रतिस्थापित करने के लिए है; गिनती एक गैर-ऋणात्मक पूर्णांक होना चाहिए। यदि छोड़े गए या शून्य, सभी घटनाओं को प्रतिस्थापित कर दिया जाएगा। के लिए खाली मिलान केवल पैटर्न को प्रतिस्थापित किया जाता है जब पिछले मैच के निकट नहीं, तो उप ('x *', '-', 'abc') '-a-b-c-' देता है।
ऊपर वर्णित वर्णित चरित्र से बचने और बैकरेरेंस के अतिरिक्त, \ g नाम वाले समूह द्वारा मिलान किए गए सबस्ट्रिंग का उपयोग करेगा, जैसा कि (? पी ...) वाक्यविन्यास द्वारा परिभाषित किया गया है। \ g संबंधित समूह संख्या का उपयोग करता है; \ g < 2> इसलिए \ 2 के बराबर है, लेकिन \ g < 2> 0 जैसे प्रतिस्थापन में संदिग्ध नहीं है। \ 20 समूह 20 के संदर्भ के रूप में व्याख्या किया जाएगा, समूह 2 के संदर्भ में शाब्दिक चरित्र '0' के संदर्भ में नहीं होगा।आरई द्वारा मिलान किए गए पूरे सबस्ट्रिंग में बैकरेफर \ g < 0> विकल्प।
आप एक समारोह है कि मूल्यों की गणना करता है मूल स्ट्रिंग में वापस स्थानापन्न के रूप में repl पारित कर सकते हैं।
जादू हार्डकोडेड 2 कहां से आया, क्या यह दूसरी पंक्ति की शुरुआत से बीवी रेगेक्स से मेल खाता था? – smci
रिकॉर्ड के लिए, मैं यह इंगित करना चाहता हूं कि इस तरह की सुविधा एक संभावित सुरक्षा जोखिम होगी। सबसे पहले यह गणित है, तो कोई फंक्शंस चाहता है, फिर ट्रिगर या जो भी हो, और आखिर में कोई स्टैक ओवरफ्लो शोषण या कुछ बताता है। तो सावधान रहें कि आप क्या चाहते हैं। –
सुरक्षा जोखिम? किसी दुर्भावनापूर्ण चल रहे जीएडिट से? मुझे ऐसा नहीं लगता। यदि वे पहले ही जीएडिट कर रहे हैं, तो वे पहले से ही कुछ भी कर सकते हैं जो सुडो के बिना किया जा सकता है। – Phob