मैं लाइटिक्स फ़ाइल में टिप्पणियों को हटाने के लिए एक पायथन रेगेक्सपी का उपयोग करना चाहता हूं। लाटेक्स में एक टिप्पणी "%" से शुरू होती है। लेकिन अगर% वर्ण बच निकला है ("\%") तो यह कोई टिप्पणी नहीं है, इसका प्रतीक प्रतिशत है।एक पायथन regexp के एक चरित्र सेट में बैकस्लैश ('बैकस्लैश नहीं' चरित्र सेट निर्दिष्ट करने के लिए कैसे?
यह कार्य मेरे लाटेक्स टेक्स्ट पर लागू होने वाले कई regexp में से एक है। मैं इन सभी reg exp को dicts की सूची में स्टोर करता हूं।
मुझे जिस समस्या का सामना करना पड़ता है वह यह है कि टिप्पणियों को छंटनी के लिए मैं उपयोग करता हूं regexp काम नहीं करता है (क्योंकि मुझे नहीं पता कि चरित्र सेट 'बैकस्लैश नहीं' कैसे निर्दिष्ट करें)। चरित्र सेट में बैकस्लैश समापन ']' से बच निकलता है और regexp गलत है।
मेरे कोड:
regexps=[]
regexps.append({r'left':'%.*', 'right':r''}) # this strips all the comments, but messes up with the percent characters (\%)
regexps.append({r'left':'[^\]%.*', 'right':r''}) # this is incorrect (escapes the closing "]")
return applyRegexps(latexText, regexps)
def applyRegexps(text, listRegExp):
""" Applies successively many regexps to a text"""
if testMode:
print str(listRegExp)
# apply all the regexps in the list
for element in listRegExp:
left = element['left']
right = element['right']
r=re.compile(left)
text=r.sub(right,text)
return text
किसी भी मदद की बहुत सराहना की जाएगी। धन्यवाद!
गाइल्स
क्या आपने 'r '[^ \\]'' का उपयोग करने का प्रयास किया था? बैकस्लैश – Bakuriu
से बचने के लिए '\\' को रेगेक्स सिंटैक्स होना चाहिए यदि आप एक शाब्दिक बैकस्लैश को रेगेक्स में रखना चाहते हैं, तो इसे डबल करें। आपके पटर को '[^ \\]%। *' –
धन्यवाद दोस्तों को पढ़ना चाहिए, मार्टिजन पीटर काम का जवाब देते हैं। मुझे थक जाना चाहिए ... – user1821466