2015-04-25 8 views
6

मैं केवल अक्षर a,e,i,o,uकुछ को छोड़कर सभी वर्णमाला कैसे मेल करें?

नकार सेट [^aeiou]* मैं a,e,i,o,u के अलावा सब कुछ मेल खा सकते हैं, लेकिन कैसे मेरे everything[a-z] को प्रतिबंधित करने के लिए उपयोग करना छोड़कर [a-z] मिलान करने के लिए करना चाहते हैं?

यह एक्सएमएल स्कीमा, एक्सपीएथ, .NET (2.0+), और जेजीएसओफ्ट रेगेक्स स्वादों में वर्ण वर्ग घटाव ([a-z-[aeiou]]) का उपयोग करके आसानी से किया जा सकता है, लेकिन मैं इसे पीसीआरई में कैसे कर सकता हूं?

उत्तर

9

आप नकारात्मक लुकहेड दावे का उपयोग कर सकते हैं। यह एक तरह का घटाव की तरह है।

(?![aeiou])[a-z] 
    ^ ^
    |  | 
subtract from 

DEMO

+0

बिल्कुल सही! .. यह संभव है समूहों में मैच पर कब्जा करने की? मैंने कोशिश की '(?! [एईओयू]) ([एजे]] +?' [डेमो] (https://regex101.com/r/aA6eK0/3) .. मैचों व्यक्तिगत पत्र हैं .. –

+0

आपको इसकी आवश्यकता होगी पूरे आरई के चारों ओर पैरों को लपेटें: '((?! [एईओयू]) [एजे]) 'एक के लिए, या' ((?: (?! [एईओयू]) [एजी]) +) 'कई के लिए (एक या और), मुझे लगता है। पहले आरई सुझाव के बाद आप केवल एक + के साथ दूर हो सकते हैं। –

+1

https://regex101.com/r/aA6eK0/4 –

संबंधित मुद्दे