ERE 在匹配多个字符这方面,与 BRE 有很明显的不同。不过,在 * 的处理上和 BRE 是相同的。
区间表达式可用于 ERE 中,但它们是写在花括号里({}),且不需要前置反斜杠字符。因此“要刚好重现5个a”的写法为 a{5}。而 { 与 } 则可用以匹配字面上的花括号。当在 ERE 里 { 找不到匹配的 } 时,POSIX特意保留其含义为 “未定义”状态。
ERE 另有两个 meta 字符,可更细腻地处理匹配控制:
? 匹配0个或一个前置正则表达式
+ 匹配1个或多个前置正则表达式
可以把 ? 想成是“可选用的”,也就是说,匹配前置正则表达式的文本,要么出现,要么没出现。
+ 字符在改变上与 * meta 字符类似,不过前置正则表达式要匹配的文本在这里至少得出现一次。