2012-03-15 12 views
10

PHP में char - को छोड़कर मैं सभी "विशेष" वर्णों (जैसे +_*&^%$#@!~) से कैसे मिलान कर सकता हूं?PHP में छोड़कर सभी विशेष वर्ण regex के साथ कैसे मिलान करें?

मुझे पता है कि \W- समेत सभी "विशेष" वर्णों से मेल खाएगा।

यूनिकोड अक्षरों के विचार में कोई सुझाव?

+7

*** सभी * पात्रों * "विशेष" कर रहे हैं *** तुम क्या मतलब है की शुभकामनाएं दें!। – tchrist

+0

विशेष वर्ण जैसे + _) (* और ^% $ # @! ~, किसी भी भाषा का नहीं ... – CaTz

+1

अंग्रेजी निश्चित रूप से उन पात्रों में से अधिकांश का उपयोग करती है। उनमें से कई भाषाओं में उपयोग की जाती हैं। कुछ नहीं हैं। कहें कि आप क्या कहते हैं मतलब। आपने अभी भी "विशिष्टता" परिभाषित नहीं की है। ** "विशिष्टता" के लिए यूनिकोड चरित्र गुण क्या है ???? ** – tchrist

उत्तर

30
  • [^-] विशेष वर्ण नहीं है आप चाहते हैं
  • [\W] सभी कर रहे हैं विशेष वर्ण जिन्हें आप जानते हैं
  • [^\w] सभी विशेष पात्र भी हैं - मेले लगता है?

तो इसलिए [^\w-] दोनों का संयोजन है: सभी "विशेष" वर्ण लेकिन - बिना।

+0

भी काम करता है, धन्यवाद, किसी कारण से यह _ char से मेल नहीं खाता है ... लेकिन मैं इसे बाईपास करने में कामयाब रहा, – CaTz

+0

क्या आपको लगता है कि '[\ W] 'वह \ W' नहीं करता है? – tchrist

+0

@ क्रिसमस: आपका क्या मतलब है, मुझे ऐसा नहीं लगता है। – hakre

3

आप इस पैटर्न की कोशिश कर सकते

([^a-zA-Z-])

यह सभी वर्णों कि a-z नहीं हैं से मेल खाना चाहिए और -

+0

यह अच्छा नहीं है, क्योंकि यूनिकोड में अक्षर हो सकते हैं ... वैसे भी, का जवाब! [^ \ p {एल} - \ d] – CaTz

+0

यह देखते हुए कि आप अपने प्रश्न के साथ बहुत व्यापक थे, वर्णों का कोई विशिष्ट दायरा नहीं था, इसलिए यह मेरी धारणा है। –

4
  • \pL यूनिकोड Letter चरित्र संपत्ति है, जो एक मेजर जनरल श्रेणी के समूह है के साथ किसी भी चरित्र से मेल खाता है; यानी, यह [\p{Ll}\p{Lt}\p{Lu}\p{Lm}\p{Lo}] से मेल खाता है।
  • \pN यूनिकोड Number चरित्र संपत्ति के साथ किसी भी चरित्र से मेल खाता है, जो एक प्रमुख सामान्य श्रेणी समूह है; यानी, यह [\p{Nd}\p{Nl}\p{No}] से मेल खाता है।
  • ध्यान दें कि यूनिकोड Alphabetic कैरेक्टरप्रोपर्टी में कुछ संयोजन चिह्न भी शामिल हैं जैसे यू + 0345 ◌ ᴄᴏᴍʙɪɴɪɴɢ ɢʀᴇᴇᴋ ʏᴘᴏɢᴇɢʀᴀᴍᴍᴇɴɪ। मैं आपको सुझाव देता हूं कि आप \pM भी शामिल करते हैं, जो यूनिकोड Mark चरित्र संपत्ति के साथ किसी भी चरित्र से मेल खाता है, जो एक प्रमुख सामान्य श्रेणी समूह है; यानी, यह [\p{Mn}\p{Me}\p{Mc}] से मेल खाता है।
  • कैरेक्टर यू +002 डी ʜʏᴘʜᴇɴ-ᴍɪɴᴜꜱ शायद - है जिसका आप उल्लेख कर रहे हैं।
  • नोट कि हालांकि यूनिकोड v6.1 27 वर्ण यूनिकोड Dash चरित्र संपत्ति के साथ, U + 2010 ʜʏᴘʜᴇɴ, U + 2013 ᴇɴ ᴅᴀꜱʜ, U + 2014 ᴇᴍ ᴅᴀꜱʜ, और U + 2212 ᴍɪɴᴜꜱ ꜱɪɢɴ रूप में इस तरह आम अक्षरों का समावेश है । चाहे आप वास्तव में उन लोगों को शामिल या बहिष्कृत करना चाहते हैं, मुझे कोई जानकारी नहीं है।

सब को देखते हुए यह संभावना नहीं है कि आप की तरह कुछ हैं:

[^\pL\pN\pM\x2D\x{2010}-\x{2015}\x{2212}] 
संबंधित मुद्दे