के साथ एक रेगेक्स स्ट्रिंग कैसे भरें मैं स्ट्रिंग के साथ regex चर भरना चाहता हूं।पैरामीटर
import re
hReg = re.compile("/robert/(?P<action>([a-zA-Z0-9]*))/$")
hMatch = hReg.match("/robert/delete/")
args = hMatch.groupdict()
args variable अब {"action": "delete"} के साथ एक नियम है।
मैं इस प्रक्रिया को कैसे उलट सकता हूं? Args dict और regex पैटर्न के तर्क के साथ, मैं स्ट्रिंग "/ रॉबर्ट/हटाएं /" कैसे प्राप्त कर सकता हूं?
इस तरह एक कार्य करना संभव है?
def reverse(pattern, dictArgs):
आप
आप मान जो करने के लिए अपने स्ट्रिंग का वर्णन का एक शब्दकोश है, तो विस्तार है कि आप इसे में रुचि रखते हैं ... तुम क्यों की आवश्यकता होगी उस स्ट्रिंग को फिर से बनाने के लिए एक regex? आपके पास पहले से ही सभी बिट्स हैं जो एक फर्क पड़ता है। बस एक ऐसा फ़ंक्शन लिखें जो उन बिट्स को लेता है और एक स्ट्रिंग बनाता है। (दूसरे शब्दों में, नहीं, यह संभव नहीं है और आप शायद अपना समय बर्बाद कर रहे हैं।) – Tomalak
मैं इस "फीचर" को एक यूआरएल स्ट्रिंग प्राप्त करने के लिए Django में उपयोग किए गए रिवर्स() जैसे फ़ंक्शन को कार्यान्वित करना चाहता हूं। यह संभव है कि Django तर्क के साथ "ब्रूट-बल" पैटर्न संभव है? – 0xBAADF00D
यदि बिलकुल भी, यह एक पायथन चीज़ है, न कि Django चीज़। लेकिन मेरा मुद्दा यह है। उदाहरण के लिए, आप कैसे विपरीत होंगे, "//robe [या] t?/(? पी ((?! Foo) [a-zA-Z0 -9] *))" '? मैचों की सूची से वापस मूल स्ट्रिंग में जाने का कोई तरीका नहीं है क्योंकि रेगेक्स में वैकल्पिक और सशर्त भाग होते हैं जो एक दूसरे पर निर्भर करते हैं। तो या तो आप रेगेक्स के एक * अत्यंत * संकीर्ण उप-सेट को परिभाषित करते हैं जिसे इसके लिए एक पार्सर की अनुमति है और लिखना है, शायद अभी भी कुछ पक्ष-मामलों को याद कर रहा है और खुद को सीमित कर रहा है - या आप अपना समय अधिक उत्पादक रूप से खर्च करते हैं। ;) रेगेक्स मिलान एक तरफा सड़क है। –
Tomalak