在正则表达式中匹配精确数量的字符

时间:2017-06-28 13:37:10

标签: regex

匹配精确数量的字符{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}长度如何匹配整个单词,我不在这里。

你能帮我一些吗?

1 个答案:

答案 0 :(得分:2)

在一般情况下(不使用POSIX BRE时):不要逃避 {}个字符。

[A-Za-z]{4,7}

这将匹配 4和7之间的所有连续字母串。丹尼斯'这个词是六个字母长,显然是匹配。

实验室这个词'真的是两场比赛:' Laborat'和' ories'。

如果你真正想要的是匹配长度为4 7的字符串,那么你可以这样做:

[A-Za-z]{4}|[A-Za-z]{7}