2010-08-19 5 views
17

मैं इस पर एक अच्छा संसाधन खोजने के लिए नहीं कर पा रहे है .. मैं एक साधारण re.placeपाइथन रेगेक्स, re.sub, पैटर्न के कई हिस्सों को बदल रहा है?

करने के लिए कोशिश कर रहा हूँ मैं कहाँ भाग बदलना चाहते हैं अपने (। *?), लेकिन समझ नहीं यह कैसे करना है पर सिंटैक्स .. मुझे पता है कि PHP में इसे कैसे करना है, इसलिए मैं उस पर आधारित हो रहा हूं जो मुझे लगता है कि यह उस पर आधारित हो सकता है (यही कारण है कि इसमें $ 1 है लेकिन मुझे पता है कि यह नहीं है पाइथन में सही) .. अगर कोई उचित वाक्यविन्यास दिखा सकता है तो मैं सराहना करता हूं, मैं किसी भी निश्चित स्ट्रिंग के लिए विनिर्देश नहीं पूछ रहा हूं, बस मैं इस तरह कुछ कैसे बदल सकता हूं, या यदि इसमें 1 से अधिक क्षेत्र हैं .. धन्यवाद

originalstring = 'fksf var:asfkj;' 
pattern = '.*?var:(.*?);' 
replacement_string='$1' + 'test' 
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring) 
+1

क्या आप परिणामस्वरूप स्ट्रिंग को ठीक से क्या चाहते हैं इसका एक उदाहरण दे सकते हैं? क्या यह 'asfkjtest' है? – mikej

+0

यह सिर्फ एक उदाहरण के लिए है, वास्तव में इससे कोई फर्क नहीं पड़ता कि मेरे पास क्या है, मेरे पास php में बहुत सी रेगेक्स सामग्री है जो मैं अजगर में करने की कोशिश नहीं कर रहा हूं इसलिए मुझे इसे कैसे करना है इसका विचार प्राप्त करने की आवश्यकता है नीचे – Rick

उत्तर

18
>>> import re 
>>> originalstring = 'fksf var:asfkj;' 
>>> pattern = '.*?var:(.*?);' 
>>> pattern_obj = re.compile(pattern, re.MULTILINE) 
>>> replacement_string="\\1" + 'test' 
>>> pattern_obj.sub(replacement_string, originalstring) 
'asfkjtest' 

संपादित करें: Python Docs बहुत उपयोगी संदर्भ हो सकता है।

+6

मुझे पता है, मुझे नहीं पता कि इसका हर किसी के बारे में क्यों उल्लेख किया गया है (पाइथन डॉक्स के बारे में), मुझे पहले से ही इनके बारे में पता है और मैंने उन्हें देखा है, मैं यहां पोस्ट कर रहा हूं क्योंकि मैं अभी भी इस बारे में स्पष्ट नहीं हूं कि इसे कैसे किया जाए इस से परामर्श करते हुए, पायथन PHP की तरह प्रतीत नहीं होता है, जहां इस तरह के विषय पर कई अन्य संसाधन हैं, इसलिए अधिक खोज के बाद, मुझे लगा कि मुझे यहां पोस्ट करना चाहिए (मैं इसके लिए अजगर की आलोचना नहीं कर रहा हूं, जैसा कि मुझे प्यार है यह, यह सिर्फ एक अवलोकन) – Rick

+0

वैसे भी, उदाहरण पोस्ट करने में मदद के लिए धन्यवाद, मैं इसकी सराहना करता हूं – Rick

+0

ओह, मैंने इसे नहीं देखा। मैं खुशी से मदद कर सकता है! – Umang

-3

पायथन दस्तावेज़ ऑनलाइन हैं, और फिर से मॉड्यूल के लिए एक है। http://docs.python.org/library/re.html

हालांकि आपके प्रश्न का उत्तर देने के लिए, पाइथन मिलान किए गए समूहों को संदर्भित करने के लिए $ 1 के बजाय \ 1 का उपयोग करता है।

7
>>> import re 
>>> regex = re.compile(r".*?var:(.*?);") 
>>> regex.sub(r"\1test", "fksf var:asfkj;") 
'asfkjtest' 
संबंधित मुद्दे