नियमित अभिव्यक्तियों का उपयोग करके मल्टीलाइन ब्लॉकों का मिलान
पायथन के नियमित अभिव्यक्तियों का उपयोग करके कई पंक्तियों तक फैले पाठ के विरुद्ध मिलान करते समय आपको कठिनाइयों का सामना करना पड़ सकता है। निम्नलिखित उदाहरण पाठ पर विचार करें:
some Varying TEXT DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF [more of the above, ending with a newline] [yep, there is a variable number of lines here] (repeat the above a few hundred times).
लक्ष्य दो घटकों को कैप्चर करना है:
कई तरीकों का असफल प्रयास किया गया है:
re.compile(r"^>(\w )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines
इस समस्या को हल करने के लिए, निम्नलिखित नियमित अभिव्यक्ति का उपयोग करें:
re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)
ध्यान रखें कि एंकर "^" और "$" लाइनफ़ीड से मेल नहीं खाता। इसलिए, मल्टीलाइन मोड में, "^" एक नई लाइन के बाद आता है, और "$" एक नई लाइन से पहले आता है।
इसके अलावा, विभिन्न न्यूलाइन प्रारूपों से सावधान रहें। उस पाठ के लिए जिसमें लाइनफ़ीड, कैरिज-रिटर्न या दोनों शामिल हो सकते हैं, इस अधिक समावेशी रेगेक्स को नियोजित करें:
re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)
DOTALL संशोधक यहां अनावश्यक है क्योंकि डॉट पहले से ही नई लाइनों को बाहर कर देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3