एक (अन्यथा काफी शक्तिशाली) re
अजगर में मॉड्यूल के विशेष मोड़ उदाहरण के लिए, कि re.split()
will never split a string on a zero-length match है अगर मैं शब्द सीमाओं के साथ एक स्ट्रिंग विभाजित करना चाहते हैं:पायथन की 're.split()' शून्य-लंबाई वाले मैचों पर क्यों विभाजित नहीं है?
>>> re.split(r"\s+|\b", "Split along words, preserve punctuation!")
['Split', 'along', 'words,', 'preserve', 'punctuation!']
बजाय
['', 'Split', 'along', 'words', ',', 'preserve', 'punctuation', '!']
यह सीमा क्यों है? क्या यह डिजाइन द्वारा है? क्या अन्य रेगेक्स स्वाद इस तरह व्यवहार करते हैं?
लिंक के लिए और वैकल्पिक हल के लिए धन्यवाद। मुझे सच में लगता है कि उन्हें बीडीएफएल के सुझाव को लेना चाहिए और इसके लिए एक झंडा जोड़ना चाहिए। –
यह वास्तव में लंगड़ा डिजाइन निर्णय है। आरईएस एक ऐसी चीज है जहां डिजाइन निर्णय निर्णय लेने वाले लोगों द्वारा संचालित नहीं किए जाने चाहिए क्योंकि आरईएस के बारे में कई चीजें लोगों की अपेक्षाओं के अनुरूप नहीं हैं, जो कुछ भी इसका मतलब है। 'x *' 'abc' से मेल खाना चाहिए क्योंकि आरई कहता है: "एक्स, शून्य या अधिक बार मैच करें"। जब आप '*' का उपयोग करते हैं तो आपको यही मिलता है। –
एक पास्कल केस वैरिएबल नाम ('re.split (' (? <= [A-z]) (? = [ए-जेड]) ',? = ए-जेड])', नाम) को विभाजित करने का प्रयास करते समय बस इस समस्या में भाग गया। ')। बहुत बुरा। – Blixt