在正则表达式中posix类之后的`{n}`迭代元字符

时间:2014-05-14 06:34:14

标签: regex

我正在学习正则表达式。我对这个例子有些怀疑:

我想在名称中找到所有带有常规扩展名的文件。这有效:

ls | grep '\.[[:lower:]][[:lower:]][[:lower:]]$'

但这不是:

ls | grep '\.[[:lower:]]{3}$'

据我所知,{n}迭代元字符会导致与前一个字符恰好{n}次出现的模式匹配。它不适用于POSIX类吗?或者我在这里犯了一些愚蠢的错误?

1 个答案:

答案 0 :(得分:5)

POSIX basic (BRE)中,你需要逃避大括号才能使其发挥作用:

ls | grep '\.[[:lower:]]\{3\}$'

在POSIX扩展(ERE)中,此要求已被删除,并且ERE最终也将正交表达式(|)添加到正则表达式中(尽管一些使用BRE的工具支持通过\|进行更改)。