匹配精确数量的字符{min,max}
文件名(input_file)包含如下文字:
Unix操作系统由Ken开创 贝尔实验室的Thompson和Dennis Ritchie 在20世纪60年代后期。
grep '[A-Za-z]\{4,7\}' input_file
输出: grep命令输出,匹配的字符用粗体字母标记为引用。
Ken强 Unix operati ng 系统 先锋 Thompso n和 Dennis Ritchie 贝尔 实验室 在晚期 20世纪60年代。
执行grep命令后,
第一个字是Unix:
单词4的总数,所以字符匹配 Unix ,字符长4/4。
第二个字操作:
单词9的总数,所以字符匹配 operati ng 人物长7/9。
第三个字系统:
单词6的总数,所以字符匹配系统字符长6/6。
第四个词先锋 ed
单词9的总数,所以字符匹配先锋 ed字符长7/9。
第五个字 Thompso n
单词8的总数,所以字符匹配 Thompso 字符长7/8。
第六个字丹尼斯
单词6的总数,所以字符匹配 Dennis 字符长6/6。
我的问题是?单词六有丹尼斯字符6的总数,但我提到{4,7}长度如何匹配整个单词,我不在这里。
你能帮我一些吗?
答案 0 :(得分:2)
在一般情况下(不使用POSIX BRE时):不要逃避 {
和}
个字符。
[A-Za-z]{4,7}
这将匹配在 4和7之间的所有连续字母串。丹尼斯'这个词是六个字母长,显然是匹配。
实验室这个词'真的是两场比赛:' Laborat'和' ories'。
如果你真正想要的是匹配长度为4 或 7的字符串,那么你可以这样做:
[A-Za-z]{4}|[A-Za-z]{7}