Friday, 15 May 2015

python regex escape characters -


हमारे पास:

  & gt; & gt; & gt; Str 'exit \ r \ ndrwxr-xr-x 2 रूट रूट 0 जनवरी 1 2000 \ x1b [1; 34mbin \ x1b [0m \ r \ ndrwxr-xr-x 3 रूट रूट 0 जनवरी 1 2000 \ x1b [1; 34mlib \ X1b [0m \ r \ ndrwxr-xr-x 10 root root 0 जनवरी 1 1970 \ x1b [1; 34mlocal \ x1b [0m \ r \ ndrwxr-xr-x 2 रूट रूट 0 जनवरी 1 2000 \ x1b [1; 34msbin \ X1b [0m \ r \ ndrwxr-xr-x5 रूट रूट 0 जनवरी 1 2000 \ x1b [1; 34mshare \ x1b [0m \ r \ n # बाहर निकलना \ r \ n '& gt; & gt; & gt; Print str exit drwxr-xr-x 2 रूट रूट 0 जनवरी 1 2000 बिन drwxr-xr-x 3 root root 0 जनवरी 1 2000 lib drwxr-xr-x 10 root रूट 0 जनवरी 1 1970 स्थानीय drwxr-xr-x 2 रूट रूट 0 जनवरी 1 2000 एसबीएन ड्र्वाक्सआर-एक्सआर-एक्स 5 रूट रूट 0 जनवरी 1 2000 शेयर # बाहर निकलें  

मैं सभी '\ xblah [0m' बकवास का उपयोग कर regexp का उपयोग करना चाहते हैं मैंने कोशिश की है

  re.sub (str, r '(\ x। * M)', '')  

लेकिन ऐसा नहीं है चाल किया किसी भी विचार?

आपके पास कुछ समस्याएं हैं:

  • आप गलत क्रम में गलत re.ub के लिए तर्क भेज रहे हैं। यह होना चाहिए:

    re.sub (regexp_pattern, प्रतिस्थापन, स्रोत_स्ट्रिंग)

  • स्ट्रिंग में "\ x" नहीं है कि "\ x1b" एस्केप वर्ण है, और यह एक एकल वर्ण है।

  • इंटरजे के रूप में बताया गया है, आप चाहते हैं "। *?" "। *" के बजाय, क्योंकि अन्यथा यह आखिरी "मी" के माध्यम से पहली एस्केप से सब कुछ मेल कर देगा।

re.sub के लिए सही कॉल है:

  प्रिंट re.sub ('\ x1b। *? M', '', s)  

वैकल्पिक रूप से, आप इसका उपयोग कर सकते हैं:

  प्रिंट re.sub ('\ x1b [^ m] * m', '', s)  

No comments:

Post a Comment