प्रतीक से अधिक "Symbol, Math" category में है, विराम चिह्न श्रेणी नहीं है। आप यह देख सकते हैं यदि आप regex के कूट UTF-8 के लिए मजबूर (यह चूक स्रोत एन्कोडिंग के लिए, और शायद अपने स्रोत UTF-8 एन्कोडेड है, जबकि मेरा डिफ़ॉल्ट स्रोत कुछ और ही है):
2.1.2 :004 > /[[:punct:]]/u =~ '<'
=> nil
2.1.2 :005 > /[[:punct:]]/ =~ '<'
=> 0
आप तो एएससीआईआई एन्कोडिंग (/ n - अधिक विकल्प here) पर रेगेक्स को मजबूर करें) आप इसे '<' पंक में वर्गीकृत करेंगे, जो मुझे लगता है कि आप क्या चाहते हैं। हालांकि, यदि आपके स्रोत में यूटीएफ -8 के ASCII सबसेट के बाहर वर्ण हैं तो यह संभवतः समस्याएं पैदा करेगा।
2.1.2 :012 > /\p{S}/u =~ '<'
=> 0
नहीं है:
2.1.2 :009 > /[[:punct:]]/n =~ '<'
=> 0
एक बेहतर समाधान 'punct' है, जो UTF-8 एन्कोडिंग में से मेल खाता है '<' के स्थान पर बजाय अपने regex में 'प्रतीक' श्रेणी का उपयोग किया जाएगा श्रेणियों की एक लंबी सूची here।
स्रोत
2014-09-17 12:39:58
मेरा ग्लिबैक दस्तावेज कहता है कि '[[: punct:]]' 'wctype (3)' किसी भी विराम चिह्न को कॉल करता है; 'ispunct (3) 'पृष्ठ कहता है' किसी भी प्रिंट करने योग्य चरित्र के लिए जांच करता है जो अंतरिक्ष या अल्फान्यूमेरिक वर्ण नहीं है। ' यह बहुत स्पष्ट लगता है। – sarnold
[रूबी का आरई इंजन विशेष है, हालांकि) (http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt) - यूनिकोड-केस और गैर-यूनिकोड-केस दोनों के लिए दस्तावेज है ' punct' कक्षा। मुझे अभी भी यकीन नहीं है कि इसका क्या अर्थ है, विशेष रूप से, लेकिन मुझे आशा है कि इससे मदद मिलती है। – sarnold