मैं regex का उपयोग कर पाठ के ब्लॉक से कुछ चीजों को हटाने की कोशिश कर रहा हूं। मेरे पास मेरे सभी पैटर्न तैयार हैं, लेकिन मैं दो (या अधिक) को ओवरलैप करने में सक्षम नहीं हूं।एकाधिक रेगेक्स प्रतिस्थापन का संयोजन
उदाहरण के लिए:
import re
r1 = r'I am'
r2 = r'am foo'
text = 'I am foo'
re.sub(r1, '', text) # Returns ' foo'
re.sub(r2, '', text) # Returns 'I '
मैं कैसे घटनाओं की दोनों एक साथ की जगह और कोई रिक्त स्ट्रिंग के साथ खत्म हो?
मैं Ned Batchelder's answer का एक थोड़ा संशोधित संस्करण का उपयोग कर समाप्त हो गया:
def clean(self, text):
mask = bytearray(len(text))
for pattern in patterns:
for match in re.finditer(pattern, text):
r = range(match.start(), match.end())
mask[r] = 'x' * len(r)
return ''.join(character for character, bit in zip(text, mask) if not bit)
मैंने मैच ऑब्जेक्ट्स के लिए 'स्टार्ट' और 'एंड' विशेषताओं के बारे में कभी सोचा नहीं। मुझे यकीन है कि यह काम करेगा, तो धन्यवाद! – Blender
महान जवाब! मैंने '()' 'start' और 'end'' जोड़ा, क्योंकि ये विधियां हैं, विशेषता नहीं। – georg
@ thg435: धन्यवाद, मुझे इसका परीक्षण करना चाहिए था! :) –