2015-01-31 12 views
22

Wow, to faktycznie pasuje do é. Co tu się stało? Chciałbym, żeby nie pasowało do niczego innego niż zazwyczaj małe litery.Jak dopasował [a-z] é?

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

egrep (GNU grep) 2,16 na Ubuntu 14.04

+0

Właśnie próbuje to na moim mac, a wyrażenie nie pasuje do niczego, tak to powinno . Na jakim systemie go uruchamiasz? – dasblinkenlight

+0

Nie pasuje do mnie: https://www.regex101.com/r/zD2lX8/1 –

+0

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

Odpowiedz

31

Ustawienie locale mówi egrep/grep -E jak zestawiać zakres [a-z] znaków.

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

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

nazwanych klas postaci mogą być używane w celu dopasowania znaków ze znakami diakrytycznymi pomimo lokalizacji:

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

Jedynym powodem, dla którego podstawowy tryb nie pasuje, jest fakt, że w trybie podstawowym '+' pasuje tylko do literału '+'. 'echo" frappé " grep '^ [a-z] * $' 'nie pasuje. (Nie wiem o '-P', który jest wyłączony w moim grep.) – hvd

+0

Dobra uwaga na temat -G,' echo "é" | LC_COLLATE = en_US.utf8 grep -G '^ [a-z] $' 'mecze. –

Powiązane problemy