Wow, das entspricht tatsächlich einem é
. Was ist hier passiert? Ich möchte, dass es nichts anderem als typischen Kleinbuchstaben entspricht.Wie passte [a-z] é?
$ echo "frappé"|egrep -E "^[a-z]+$"
frappé
egrep (GNU grep) 2.16 auf Ubuntu 14.04
Wow, das entspricht tatsächlich einem é
. Was ist hier passiert? Ich möchte, dass es nichts anderem als typischen Kleinbuchstaben entspricht.Wie passte [a-z] é?
$ echo "frappé"|egrep -E "^[a-z]+$"
frappé
egrep (GNU grep) 2.16 auf Ubuntu 14.04
Ihre locale Einstellung teilt egrep
/grep -E
wie die [a-z]
Zeichenbereich zu sammeln.
$ export LC_COLLATE=C
$ echo "frappé" | egrep '^[a-z]+$'
# no match
$ export LC_COLLATE=en_US.utf8
$ echo "frappé" | egrep '^[a-z]+$'
frappé
Named Charakterklassen können trotz des Lokals mit diakritischen Zeichen verwendet werden, um Zeichen zu entsprechen:
$ export LC_COLLATE=C
$ echo "frappé" | egrep '^[[:lower:]]+$'
frappé
Der Grund dafür, dass der Basismodus nicht zusammenpasst, ist, dass '+' im Grundmodus nur einem Literal '+' entspricht. 'echo" frappé "| grep '^ [a-z] * $' 'stimmt überein. (Ich weiß nicht über '-P', das ist in meinem Grep deaktiviert.) – hvd
Guter Punkt über -G,' echo "é" | LC_COLLATE = de_DE.utf8 grep -G '^ [a-z] $' 'passt. –
ich gerade versucht, diese auf meinem Mac, und der Ausdruck nicht alles akzeptiert, so wie es sein sollte . Auf welchem System laufen Sie? – dasblinkenlight
Passt nicht zu mir: https://www.regex101.com/r/zD2lX8/1 –
https://www.regex101.com/r/zD2lX8/2 –