[az]如何匹配é?

jca*_*314 22 regex grep locale

哇,这实际上匹配了一个é.这里发生了什么?我希望它不匹配除了典型的小写字母以外的任何东西.

$ echo "frappé"|egrep -E "^[a-z]+$"
frappé 
Run Code Online (Sandbox Code Playgroud)

Ubuntu 14.04上的egrep(GNU grep)2.16

Ben*_*imm 31

您的语言环境设置告诉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é
Run Code Online (Sandbox Code Playgroud)

尽管有语言环境,但命名字符类可用于将字符与变音符号匹配:

$ export LC_COLLATE=C
$ echo "frappé" | egrep '^[[:lower:]]+$'
frappé
Run Code Online (Sandbox Code Playgroud)