【发布时间】:2016-10-22 16:07:18
【问题描述】:
我正在尝试使用 egrep 列出文件中的所有 3 个字母单词。
样本输入;
点击
腰带
剑
悬崖
不能
可以
不是
正则表达式;
egrep "\b[a-zA-Z]{3}\b"
我列出了我的 3 个字母单词,但为什么无法显示在结果中?
编辑
我已收到原始问题的答案,我现在使用;
egrep '^[a-zA-Z]{3}$'
这很有效,因为我每行只有 1 个单词。我的问题现在已更新,因为该答案有点脆弱。
如果输入不是每行 1 个单词而是行和段落,我将如何搜索 3 个字母的单词?
【问题讨论】:
-
可能是因为
'算作一个单词边界,而在语言学术语中,这就是can not,它是两个三个字母的单词。 -
是的,它有can,但没有单独列出,但我不想can!除非我使用 ^ 和 $ 而不是 \b?
-
你能发布示例输入和预期输出吗?
-
如果每个单词都是单独的,那么你不需要单词边界。
/^...$/可以解决问题。 -
\b匹配单词字符与非单词字符相邻的任何位置。n是单词字符'是非单词字符,所以它们之间是匹配的。