为什么在正则表达式中需要+来进行ksh变量模式操作

时间:2012-08-29 06:02:22

标签: regex ksh

假设我想从字符串daaaaab * aabdcd *中提取后缀字符串“ aabdcd ”,则在KSH中使用以下表达式,

  

$ {EX ##的 + ([!B])+([B])}

这意味着匹配并删除“b”以外的任何字符,然后是字符“b”。我不明白的是前面的+(以粗体突出显示)。为什么需要它?没有它,正则表达式无法完成预期的工作。

#ex=daaaaabaabdcd
#echo ${ex##([!b])+([b])}
daaaaabaabdcd
#echo ${ex##+([!b])+([b])}
aabdcd

1 个答案:

答案 0 :(得分:2)

+代表结果的regex quantifier。所以使用+你可能会收到多个结果。以下是可以使用的其他量词:

?(pattern) matches zero or one times the pattern.
*(pattern) matches any time the pattern.
+(pattern) matches one or more time the pattern.
@(pattern) matches one time the pattern.
!(pattern) matches string without the pattern.