दिलचस्प पोस्ट
मोंगोडीबी या अन्य दस्तावेज़ आधारित डेटाबेस सिस्टम का उपयोग कब किया जाए? जब स्प्रिंग सिक्योरिटी का इस्तेमाल किया जाता है, तो बीन में मौजूदा यूज़रनेम (यानी सुरक्षा कंसोर्ट) की जानकारी प्राप्त करने का सही तरीका क्या है? कैसे स्थापित करें Xcode परियोजना में पथ शामिल करें कैसे एक फ़ाइल डाउनलोड करें और इसे AFNetworking के साथ दस्तावेज़ निर्देशिका में सहेजें? एंड्रॉइड पर HTML5 mp4 वीडियो को कैसे चलाएं? String.Join बनाम StringBuilder: जो तेजी से है? php: यूटीसी ऑफ़सेट द्वारा एक समयक्षेत्र निर्धारित करें मुझे एक Xcode कार्यक्षेत्र में परियोजनाओं में निर्भरता कैसे प्रबंधित करनी चाहिए? जावास्क्रिप्ट में एक तत्व पर मैं प्रोग्राममैटिक रूप से कैसे क्लिक करूं? MySQL में परिणाम सेट पर लूपिंग स्टिकी ब्रॉडकास्ट क्या है? एक MySQL क्वेरी को सीएसवी में कनवर्ट करने के लिए PHP कोड मैं एक बटन प्रेस के बाद प्रत्येक 10 मिनट के बाद एक विधि को दोहराता हूं और इसे दूसरे बटन प्रेस पर समाप्त कर सकता हूं सेट अंतराल रोकें विखंडों में एक सूची पर पुनरावृत्त करने के लिए सबसे "अजगर" तरीका क्या है?

String.replace में एक regex इनपुट कैसे करें?

मुझे एक regex घोषित करने पर कुछ मदद की आवश्यकता है। मेरे निविष्टियाँ निम्न की तरह हैं:

this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>. and there are many other lines in the txt files with<[3> such tags </[3> 

आवश्यक आउटपुट है:

 this is a paragraph with in between and then there are cases ... where the number ranges from 1-100. and there are many other lines in the txt files with such tags 

मैंने यह कोशिश की है:

 #!/usr/bin/python import os, sys, re, glob for infile in glob.glob(os.path.join(os.getcwd(), '*.txt')): for line in reader: line2 = line.replace('<[1> ', '') line = line2.replace('</[1> ', '') line2 = line.replace('<[1>', '') line = line2.replace('</[1>', '') print line 

मैंने यह भी करने की कोशिश की है (लेकिन ऐसा लगता है कि मैं गलत regex वाक्यविन्यास का उपयोग कर रहा हूँ):

  line2 = line.replace('<[*> ', '') line = line2.replace('</[*> ', '') line2 = line.replace('<[*>', '') line = line2.replace('</[*>', '') 

मैं कड़ी मेहनत के replace 1 से 99 की replace नहीं चाहता । ।

वेब के समाधान से एकत्रित समाधान "String.replace में एक regex इनपुट कैसे करें?"

यह परीक्षण किया गया स्निपेट इसे करना चाहिए:

 import re line = re.sub(r"</?\[\d+>", "", line) 

संपादित करें: यहां एक टिप्पणीकृत संस्करण है जो समझाता है कि यह कैसे काम करता है:

 line = re.sub(r""" (?x) # Use free-spacing mode. < # Match a literal '<' /? # Optionally match a '/' \[ # Match a literal '[' \d+ # Match one or more digits > # Match a literal '>' """, "", line) 

Regexes मजेदार हैं! लेकिन मैं दृढ़ता से एक घंटे या दो घंटे की पढ़ाई के लिए बुनियादी बातों की सिफारिश करेंगे। शुरुआत के लिए, आपको यह जानने की ज़रूरत है कि कौन से वर्ण विशेष हैं: "मेटाचैक्टर्स" जिसे बचने की जरूरत है (अर्थात बैकस्लैश के सामने – और नियम अलग-अलग कक्षाओं के अंदर और बाहर के नियम हैं।) यहां एक उत्कृष्ट ऑनलाइन ट्यूटोरियल है: www .regular- expressions.info जब आप खर्च करते हैं, तो कई बार अपने लिए भुगतान करना होगा खुश regexing!

str.replace() निश्चित प्रतिस्थापन करता है इसके बजाय re.sub() उपयोग करें

मैं इसे पसंद करता हूं (टिप्पणी में समझाया गया रेगेक्स):

 import re # If you need to use the regex more than once it is suggested to compile it. pattern = re.compile(r"</{0,}\[\d+>") # <\/{0,}\[\d+> # # Match the character “<” literally «<» # Match the character “/” literally «\/{0,}» # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «{0,}» # Match the character “[” literally «\[» # Match a single digit 0..9 «\d+» # Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» # Match the character “>” literally «>» subject = """this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>. and there are many other lines in the txt files with<[3> such tags </[3>""" result = pattern.sub("", subject) print(result) 

यदि आप regex के बारे में और अधिक जानना चाहते हैं तो मैं रेगुलर एक्सप्रेशंस कुकबुक को पढ़ने के लिए जज गोइवेवर्ट्स और स्टीवन लेविथान द्वारा सुझाता हूं।

सबसे आसान तरीका

 import re txt='this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>. and there are many other lines in the txt files with<[3> such tags </[3>' out = re.sub("(<[^>]+>)", '', txt) print out 

स्ट्रिंग ऑब्जेक्ट की विधि को प्रतिस्थापित करना नियमित अभिव्यक्ति को स्वीकार नहीं करता है, लेकिन केवल निश्चित स्ट्रिंग्स (दस्तावेज़ीकरण देखें: http://docs.python.org/2/library/stdtypes.html#str.replace )।

आपको re मॉड्यूल का उपयोग करना होगा:

 import re newline= re.sub("<\/?\[[0-9]+>", "", line) 

नियमित अभिव्यक्ति का उपयोग करने की आवश्यकता नहीं है (आपके नमूना स्ट्रिंग के लिए)

 >>> s 'this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>. \nand there are many other lines in the txt files\nwith<[3> such tags </[3>\n' >>> for w in s.split(">"): ... if "<" in w: ... print w.split("<")[0] ... this is a paragraph with in between and then there are cases ... where the number ranges from 1-100 . and there are many other lines in the txt files with such tags