इस उत्तर को लिखते समय , मुझे s
-flag ( dotall
- dot मैचों linebreaks) का उपयोग करने के बजाय लाइनब्रीक पर विशेष रूप से मेल खाना था ।
साइटों को आमतौर पर रेगुलर एक्सप्रेशन के परीक्षण के लिए इस्तेमाल किया अलग तरीके से व्यवहार करते समय पर मैच के लिए कोशिश कर रहा है \n
या \r\n
।
मैंने ध्यान दिया
Regex101 केवल लाइनब्रीक पर मेल खाता है
\n
( उदाहरण - हटाएं\r
और यह मेल खाता है)RegExr लाइनब्रेक से मेल खाता न पर
\n
है और न ही पर\r\n
और मैं कुछ यह एक LINEBREAK मिलान करने के लिए नहीं मिल रहा, के अलावा कर सकते हैंm
-flag और\s
( उदाहरण )Debuggex भी अधिक अलग बर्ताव करता है:
में इस उदाहरण यह केवल पर से मेल खाता है\r\n
, जबकि
यहाँ यह केवल पर से मेल खाता है\n
एक ही झंडे और इंजन निर्दिष्ट के साथ,
मैं m
-flag (बहुस्तरीय - पूरी तरह ^
से शुरू और $
एक पंक्ति के अंत से मेल खाता है ) से अवगत हूं , लेकिन कभी-कभी यह एक विकल्प नहीं है। के साथ भी \s
, यह टैब और रिक्त स्थान से मेल खाता है, भी।
यूनिकोड न्यूलाइन कैरेक्टर ( \u0085
) का उपयोग करने का मेरा विचार सफल नहीं था, इसलिए:
- क्या मैच को एक लाइनब्रेक (अधिमानतः प्रयुक्त भाषा की परवाह किए बिना) को एक नियमित अभिव्यक्ति में एकीकृत करने का एक विफल तरीका है?
- उपर्युक्त साइटें अलग-अलग व्यवहार क्यों करती हैं (विशेष रूप से डीबगेज, केवल
\n
एक बार और केवल एक बार मिलान\r\n
)?
\r?\n
दोनों \r\n
और \n
लाइन समाप्ति दृश्यों का मिलान करने के लिए । यह पुराने \r
मैक सिंटैक्स के लिए काम नहीं करता है , लेकिन इन दिनों बहुत दुर्लभ है।
[\r\n]+
- या ऐसा कुछ