regex - [a-z]如何匹配é?

标签 regex grep locale

哇,这实际上匹配了é。这里发生了什么?我希望除了通常的小写字母之外,不匹配其他任何内容。

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

Ubuntu 14.04上的egrep(GNU grep)2.16

最佳答案

您的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é

关于regex - [a-z]如何匹配é?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247204/

相关文章:

regex - 使用 RegEx 提取逗号分隔值

awk - 如何使用 grep 对列表进行排序以显示基于预定义列表的唯一出现次数?

java - RuleBasedCollat​​or getInstance Locale.US getRules 在 Droid 中返回空字符串

regex - PCRE正则表达式到SED

regex - 将字符串中的分数替换为小数

正则表达式匹配一些括号要点

linux - 如何替换: in grep output +

linux - 在行字符串中找到最大数并显示两列 - linux

C编程: How to program for Unicode?

当设备语言为 en_US 时,Android 7.0 Nougat 会选择默认字符串