2015-01-31 4 views
22

वाह, यह वास्तव में एक é मिलान नहीं हुआ। यहाँ क्या हुआ? मैं इसे कम केस अक्षरों के अलावा किसी भी चीज़ से मेल नहीं करना चाहता हूं।[ए-जेड] मैच कैसे किया गया?

$ echo "frappé"|egrep -E "^[a-z]+$" 
frappé 

egrep (जीएनयू ग्रेप) 2.16 Ubuntu 14.04 पर

+0

मैं बस पर मेरी मैक इस की कोशिश की, और अभिव्यक्ति तरीका यह होना चाहिए कुछ भी मेल नहीं खाती, । आप किस प्रणाली पर चल रहे हैं? – dasblinkenlight

+0

मेरे लिए मेल नहीं खाता: https://www.regex101.com/r/zD2lX8/1 –

+0

https://www.regex101.com/r/zD2lX8/2 –

उत्तर

31

आपका locale सेटिंग बताता egrep/grep -E[a-z] चरित्र रेंज मुक़ाबला करने के लिए कैसे।

$ export LC_COLLATE=C 
$ echo "frappé" | egrep '^[a-z]+$' 
# no match 

$ export LC_COLLATE=en_US.utf8 
$ echo "frappé" | egrep '^[a-z]+$' 
frappé 

नाम चरित्र वर्गों स्थान के बावजूद विशेषक साथ वर्णों का मिलान करने के लिए इस्तेमाल किया जा सकता है:

$ export LC_COLLATE=C 
$ echo "frappé" | egrep '^[[:lower:]]+$' 
frappé 
+0

एकमात्र कारण बुनियादी मोड मिलान करने के लिए प्रकट नहीं होता है, क्योंकि बुनियादी मोड, में '+' केवल मेल खाता है एक शाब्दिक '+' है। 'echo "frappé" | grep '^ [ए-जेड] * $' 'मैच करता है। (मैं, '-P' के बारे में पता नहीं है कि मेरे ग्रेप में अक्षम होता है।) जी के बारे में – hvd

+0

अच्छा बिंदु,' गूंज "é" | LC_COLLATE = en_US.utf8 ग्रेप जी '^ [a-z] $' 'मैचों। –

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