2012-11-07 17 views
7

मुझे पाइथन को छोड़कर this question के समाधान की आवश्यकता है! मैंने पायथन, as apparently के लिए रेगेक्स लाइब्रेरी स्थापित करने का प्रयास किया है जो पाइथन के रेगेक्स में POSIX अभिव्यक्तियों के उपयोग को सक्षम बनाता है, लेकिन फिर भी मुझे लगता है कि इसमें [:alpha:] कक्षा में यूनिकोड वर्ण शामिल नहीं हैं। उदाहरण के लिए:पायथन में रेगेक्स के साथ उच्चारण वर्णों से कैसे मिलान करें?

>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0) 
'Please work bl' 

मैं इसे मिलान करना चाहते हैं जब Please work blåbær and NOW stop

संपादित करें: मैं अजगर 2,7

उपयोग कर रहा हूँ संपादित करें 2: मैंने कोशिश की है:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0) 
'Please work bl\xc3' 

काफी कुछ नहीं जो मैं चाहता था (मैं पहले गैर-ASCII चरित्र के बाद भी भाग लेना चाहता हूं), बी कम से कम यह पहले से अधिक चरित्र पर मेल खाता है। मैं जो कुछ भी चाहता हूं उससे मेल खाने के लिए मुझे यहां क्या करना चाहिए?

संपादित करें 3: मैं किसी भी गैर शब्द "अक्षर" से मेल नहीं खाता; "शब्द" से मेरा मतलब है ए-जेड, ए-जेड, स्पेस, और शब्द वर्णों के किसी भी उच्चारण की विविधता। मुझे आशा है कि मुझे अपना विचार मिल जाएगा;

>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0) 
'lets match força' 

मैं यह काम करता है लगता है: तो मैं सिर्फ इस एक स्क्रिप्ट के लिए अजगर 3 का उपयोग करने की कोशिश की: की तरह

lets match força, but stop before that comma 

एक वाक्यांश में मैं मैच के लिए केवल lets match força

संपादित 4 चाहते हैं पायथन 3 में अधिकांश भाग के लिए, सिवाय इसके कि यह संख्याओं से मेल खाता है (जो मैं निश्चित रूप से नहीं चाहता) और अंडरस्कोर करता हूं। इसे ठीक करने का कोई तरीका, पायथन 2 या 3 में?

उत्तर

2

यह स्पष्ट नहीं है कि आप किस पायथन संस्करण का उपयोग कर रहे हैं। यदि आप 2.x का उपयोग करते हैं तो आपके पास शायद एक यूनिकोड समस्या हो। आगे पॉइंटर्स के लिए यह post देखें और आगे विस्तार के लिए अपने प्रश्न को अपडेट करने के लिए स्वतंत्र महसूस करें।

इम काफी surprissed, कि मैं उचित यूनिकोड प्रतिनिधित्व करने के लिए उच्चारण चरित्र परिवर्तित नहीं कर सकते ...

लेकिन देखते हैं वैकल्पिक हल:

re.search(re.compile('((\w+\s)|(\w+\W+\w+\s))+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 

या

re.search(re.compile('\D+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0)