Python रेगुलर एक्सप्रेशन में "$" कैरेक्टर के व्यवहार को समझना
- Python के
re मॉड्यूल का उपयोग करते समय आम तौर पर माना जाता है कि ^ का मतलब "string की शुरुआत" होता है और $ का मतलब "string का अंत" होता है।
- लेकिन
$ हमेशा सिर्फ "string का अंत" नहीं बताता, और इसका व्यवहार platform के अनुसार अलग हो सकता है।
- Python में जब multiline mode निष्क्रिय होता है, तब
$ कैरेक्टर string के अंत पर या string के अंत में मौजूद newline कैरेक्टर से ठीक पहले match कर सकता है।
string के अंत और newline कैरेक्टर match होने के बीच का अंतर
- multiline mode बंद होने पर Python में बिना newline कैरेक्टर के string के अंत से match कराने के लिए केवल
$ का उपयोग पर्याप्त नहीं है।
- string के अंत से match कराने के लिए
\z और \Z का उपयोग किया जा सकता है।
- Python में
re.MULTILINE का उपयोग करने पर $ string के अंत और हर पंक्ति के अंत पर, यानी newline कैरेक्टर से ठीक पहले, match करता है।
अलग-अलग platforms पर रेगुलर एक्सप्रेशन के व्यवहार की तुलना
- कई platforms पर
"cat\n" के लिए pattern matching की तुलना करने वाली तालिका से पता चलता है कि अगर newline कैरेक्टर सहित match करने की अनुमति हो, तो multiline mode में $ का उपयोग लगातार एक जैसा व्यवहार देता है।
- अगर newline कैरेक्टर को शामिल किए बिना match करना हो, तो Python और ECMAScript को छोड़कर सभी platforms पर
\z का उपयोग करना चाहिए, और Python तथा ECMAScript में क्रमशः \Z या multiline mode के बिना $ का उपयोग करना चाहिए।
GN⁺ की राय
- यह लेख रेगुलर एक्सप्रेशन का उपयोग करने वाले डेवलपर्स को Python में
$ कैरेक्टर के अप्रत्याशित व्यवहार के प्रति सतर्क कर सकता है।
- रेगुलर एक्सप्रेशन string processing में बहुत शक्तिशाली हैं, लेकिन अलग-अलग platforms पर इनका व्यवहार बदल सकता है, इसलिए सावधानी जरूरी है।
- डेवलपर्स को इन अंतरों के बारे में जागरूक रहना चाहिए और cross-platform applications बनाते समय compatibility समस्याओं से बचने के लिए अतिरिक्त testing करनी चाहिए।
- समान सुविधाएँ देने वाली दूसरी रेगुलर एक्सप्रेशन libraries में Java की
java.util.regex और .NET की System.Text.RegularExpressions शामिल हैं; इन्हें भी उनके platform के अनुसार व्यवहार के अंतर समझकर उपयोग करना चाहिए।
- नए रेगुलर एक्सप्रेशन syntax या व्यवहार को अपनाते समय मौजूदा code के साथ compatibility, performance पर प्रभाव, और टीम के भीतर learning curve को ध्यान में रखना चाहिए, तथा ऐसे बदलावों के लाभ और लागत का सावधानी से मूल्यांकन करना चाहिए।
1 टिप्पणियां
Hacker News की राय
grep,sed,awk, Python आदि) इसे default रूप से line के अंत के रूप में मानती हैं.\Aऔर\Zया उनके समकक्ष इस्तेमाल किए जाते हैं.