से मिलान करने के लिए पायथन रेगेक्स सी/सी ++ कोड में बहु-लाइन प्री-प्रोसेसर मैक्रोज़ से मेल खाने के लिए मैंने जो नियमित अभिव्यक्ति लिखा है, वह निम्नानुसार है। मैं नियमित रूप से नियमित अभिव्यक्ति गुरु नहीं हूं, इसलिए मैं इस बारे में कोई सलाह लेता हूं कि मैं इसे कैसे बेहतर बना सकता हूं।बहु-लाइन प्रीप्रोसेसर मैक्रो
\s*#define(.*\\\n)+[\S]+(?!\\)
यह इस सब से मेल खाना चाहिए:
यहाँ regex है
#define foo(x) if(x) \
doSomething(x)
लेकिन केवल इस (के कुछ कोड की अगली पंक्ति से मेल नहीं करना चाहिए:
#define foo(x) if(x) \
doSomething(x)
normalCode();
और सिंगल-लाइन प्रीप्रोसेसर मैक्रोज़ से भी मेल नहीं खाना चाहिए।
मुझे पूरा यकीन है कि उपरोक्त regex काम करता है - लेकिन जैसा कि मैंने कहा, शायद यह करने का एक बेहतर तरीका है, और मुझे कल्पना है कि इसे तोड़ने के तरीके हैं। क्या कोई सुझाव दे सकता है?