2017-07-22 20 views
5

मैं कुछ स्ट्रिंग में एक पैटर्न से मेल खाने वाले सबस्ट्रिंग्स के साथ कुछ (केवल प्रतिस्थापन से अधिक) करना चाहता हूं। एक काम एक मूल्य लौटने, सी और अधिकांश अन्य प्रोग्रामिंग भाषाओं में के रूप में एक अभिव्यक्ति थे, तो यह (पायथन अर्थ विज्ञान के साथ सी सिंटैक्स का उपयोग) होगा:पायथन में, मैं स्ट्रिंग पर नियमित अभिव्यक्ति के सभी मैचों पर कैसे लूप कर सकता हूं?

while (match = re.search(pat, str)) { 
     /* do something to the string, using the match object, 
      in addition to removing or replacing the substring 
     */ 
    } 

या वरबोस रूप में दर्शा, एक के रूप में एक काम का उपयोग न करें अभिव्यक्ति:

for (match = re.search(pat, str); 
     match; 
     match = re.search(pat, str)) { 
    /* do something to the string, using the match object */ 
} 

कम से कम इन सबसे प्रोग्रामिंग भाषाओं में संभव है में से एक: सी, सी ++, जावा, पर्ल, जावास्क्रिप्ट, ... लेकिन उनमें से न पायथन में संभव हो रहा है। क्या कोई पाइथोनिक समतुल्य है (ब्रेक या जारी बयान के साथ एक कट्टर गड़बड़ शामिल नहीं है)?

+2

जवाब निर्भर करता है। आप किस पर लूपिंग कर रहे हैं? निश्चित रूप से एक मैपिंग के लिए कोई नहीं है, लेकिन निश्चित रूप से पाइथोनिक समकक्ष हैं। यदि आप जो चाहते हैं उसके साथ थोड़ा और सटीक हो सकते हैं ... क्योंकि यह खड़ा है कि यह सवाल बहुत व्यापक है। –

उत्तर

4

आप finditer की तलाश में जा सकता है:

वापसी पुनरावर्तक उपज मैच स्ट्रिंग में आरई पैटर्न के लिए सभी गैर-अतिव्यापी मैचों में वस्तुओं। स्ट्रिंग को बाएं से दाएं स्कैन किया जाता है, और पाए गए क्रम में मैचों को वापस कर दिया जाता है। परिणाम में रिक्त मिलान शामिल नहीं होते हैं जब तक कि वे किसी अन्य मैच की शुरुआत को स्पर्श न करें।

#!/usr/bin/env python3 

import re 

s = "abcabcabc"; 
it = re.finditer("(\w)", s) 
for m in it: 
    print(m.groups()) 
$ ./t.py 
('a',) 
('b',) 
('c',) 
('a',) 
('b',) 
('c',) 
('a',) 
('b',) 
('c',) 
+0

यह केवल एक बार स्ट्रिंग स्कैन करता है, इसलिए यह सामान्य मामले में काम नहीं करेगा; लूप के अंदर स्ट्रिंग में लगभग कोई भी बदलाव इसे तोड़ देगा, उदाहरण के लिए मिलान की गई पैटर्न को किसी ऐसी चीज से बदलना जिसमें अलग-अलग लंबाई हो। – zizzler

+0

शायद आप एक उदाहरण दे सकते हैं जो आपके इच्छित व्यवहार को दिखाता है और पूछता है कि इसे पायथन में कैसे कार्यान्वित किया जाए। मैं यह अनुमान लगाने के लिए तैयार नहीं हूं कि "ओपी क्या चाहता है"। –

संबंधित मुद्दे