[a-z]如何匹配é?

时间:2015-01-31 01:28:08

标签: regex grep locale

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

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

在Ubuntu 14.04上的egrep(GNU grep)2.16

1 个答案:

答案 0 :(得分: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é