我正在学习正则表达式。我对这个例子有些怀疑:
我想在名称中找到所有带有常规扩展名的文件。这有效:
ls | grep '\.[[:lower:]][[:lower:]][[:lower:]]$'
但这不是:
ls | grep '\.[[:lower:]]{3}$'
据我所知,{n}
迭代元字符会导致与前一个字符恰好{n}
次出现的模式匹配。它不适用于POSIX类吗?或者我在这里犯了一些愚蠢的错误?
答案 0 :(得分:5)
在POSIX basic (BRE)中,你需要逃避大括号才能使其发挥作用:
ls | grep '\.[[:lower:]]\{3\}$'
在POSIX扩展(ERE)中,此要求已被删除,并且ERE最终也将正交表达式(|
)添加到正则表达式中(尽管一些使用BRE的工具支持通过\|
进行更改)。