【发布时间】:2011-06-11 23:42:36
【问题描述】:
我正在尝试安装一个正则表达式,它可以在文件中获取一些单词,其中该单词的所有字母都与单词模式匹配。
我的问题是,正则表达式找不到重音词,但在我的文本文件中有很多重音词。
我的命令行是:
cat input/words.txt | grep '^[éra]\{1,4\}$' > output/words_era.txt
cat input/words.txt | grep '^[carroça]\{1,7\}$' > output/words_carroca.txt
文件内容为:
carroça
éra
éssa
roça
roco
rato
onça
orça
roca
我该如何解决?
【问题讨论】:
-
locale的输出是什么?input/words.txt的编码是什么? -
它对我有用,但也许问题出在你的语法上:方括号用于定义字符组,所以至少第二行肯定是错误的。试试:grep '^carroça\{1,3\}$'
-
@UncleZeiv,我把正则表达式弄错了,现在我用正确的方式编辑了。
-
@ephemient,语言环境是:LANG="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_CTYPE="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8 " LC_MONETARY="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_ALL= 。输入/单词的编码是 ISO-8859-1
-
它可能有效,但它仍然是“错误的”,因为正则表达式并没有真正说明你想要做什么。它看起来就像您在尝试匹配单词
carroça,但它说匹配列出的1到7个字母的任何序列。 Ziev 更短的[caroç]确实更好。两者都将匹配carroça,也将匹配roca和orça等,但不会匹配éssa或éra。我指出这一点只是因为您似乎可能不完全清楚方括号在正则表达式中的作用。
标签: regex unicode grep cat non-ascii-characters