"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > रेगुलर एक्सप्रेशन का उपयोग करके पायथन में मल्टीलाइन ब्लॉक का मिलान कैसे करें?

रेगुलर एक्सप्रेशन का उपयोग करके पायथन में मल्टीलाइन ब्लॉक का मिलान कैसे करें?

2024-11-04 को प्रकाशित
ब्राउज़ करें:777

How to Match Multiline Blocks in Python Using Regular Expressions?

नियमित अभिव्यक्तियों का उपयोग करके मल्टीलाइन ब्लॉकों का मिलान

पायथन के नियमित अभिव्यक्तियों का उपयोग करके कई पंक्तियों तक फैले पाठ के विरुद्ध मिलान करते समय आपको कठिनाइयों का सामना करना पड़ सकता है। निम्नलिखित उदाहरण पाठ पर विचार करें:

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