एक विवरण के साथ शुरू ... त्वरित उत्तर
के लिए समाप्त करने के लिए एक विशिष्ट भाग तक मिलान करने के लिए छोड़ पाठ का, और पुष्टि करें कि यह वहां है लेकिन इसे मैच के साथ शामिल नहीं किया गया है, आप नोटेशन (?=regex)
का उपयोग करके सकारात्मक दिखने का उपयोग कर सकते हैं
यह पुष्टि करता है कि उस स्थिति में 'रेगेक्स' मौजूद है, लेकिन इसकी प्रारंभिक स्थिति से केवल प्रारंभ स्थिति से मेल खाता है।
तो, यह हमें अभिव्यक्ति देता है:
.*?(?=All text before this line will be included)
कहाँ .
किसी भी चरित्र है, और *?
एक आलसी मुकाबला नहीं है (कम से कम रकम, नियमित रूप से *
की तुलना में जो सबसे अधिक राशि संभव खपत की खपत)।
हालांकि, लगभग सभी रेगेक्स स्वादों में .
नई लाइन को बाहर कर देगा, इसलिए हमें न्यूलाइन को शामिल करने के लिए स्पष्ट रूप से ध्वज का उपयोग करने की आवश्यकता है। उपयोग करने के लिए ध्वज s
है, (जो "सिंगल-लाइन मोड" के लिए खड़ा है, हालांकि इसे कुछ स्वादों में "डॉटल" मोड भी कहा जाता है)।
और यह सहित विभिन्न तरीकों से लागू किया जा सकता ...
विश्व स्तर पर,/आधारित regexes के लिए:
/regex/s
इनलाइन, regex के लिए वैश्विक:
(?s)regex
इनलाइन, केवल ब्रैकेट किए गए भाग पर लागू होता है:
(?s:reg)ex
और फ़ंक्शन तर्क के रूप में (इस भाषा पर निर्भर करता है कि आप किस भाषा के साथ रेगेक्स कर रहे हैं)।
(?s).*?(?=All text before this line will be included)
हालांकि, कुछ चेतावनियां हैं::
तो, शायद regex आप चाहते हैं यह है
सबसे पहले, नहीं सब regex जायके आलसी परिमाणकों का समर्थन - आपको केवल .*
का उपयोग करना पड़ सकता है, (या संभावित रूप से सटीक आवश्यकताओं के आधार पर अधिक जटिल तर्क का उपयोग करें यदि "सभी पाठ पहले ... "कई बार प्रकट हो सकता है)।
दूसरा, सभी रेगेक्स स्वाद नहीं दिखने वाले समर्थन का समर्थन करते हैं, इसलिए आपको उस पाठ को प्राप्त करने के लिए कैप्चर किए गए समूहों का उपयोग करने की आवश्यकता होगी, जिसे आप मिलान करना चाहते हैं।
अंत में, आप हमेशा इस तरह के ऊपर s
के रूप में झंडे, निर्दिष्ट नहीं कर सकते, तो बराबर मिलान पाने के लिए या तो मैच "कुछ भी या नई पंक्ति" (.|\n)
या हो सकता है [\s\S]
(सफेद स्थान को और नहीं खाली स्थान के) करना पड़ सकता है।
आप (मुझे लगता है कि एक्सएमएल कार्यान्वयन है) इन सब के आधार पर सीमित कर रहे हैं, तो आप करना होगा:
([\s\S]*)All text before this line will be included
और फिर मैच के परिणाम से पहले उप समूह निकालें।
इस मैच में * टेक्स्ट शामिल होगा "इस पंक्ति से पहले सभी पाठ शामिल किए जाएंगे" - यह स्पष्ट नहीं है कि यह मूल प्रश्न से वांछित है, लेकिन अगर नहीं, तो इसे बाहर करने के तरीके पर मेरा उत्तर देखें। –
मेरा मतलब यह था कि पहले उपसमूह में मिलान करने वाला टेक्स्ट शामिल होगा। मैं स्पष्ट करने के लिए संपादित करेंगे। – VoteyDisciple
हाँ, लेकिन मैं तर्क दूंगा कि लुकहेड अवधारणात्मक रूप से जो चाहता है उसके करीब है (और इस प्रकार बेहतर विकल्प)। बेशक, लुकहेड हमेशा उपलब्ध नहीं होता है, लेकिन यदि आपके पास यह नहीं है तो शायद आपके पास आलसी मिलान नहीं है ... मैंने यह सारी जानकारी मेरे उत्तर में जोड़ने का प्रयास किया है, उम्मीद है कि यह स्पष्ट रूप से किया गया है। –