1

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

${ex## + ([!b])+([b])}

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

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

1 回答 1

2

+ 表示结果的正则表达式量词。因此,使用 + 您可能会收到多个结果。以下是可以使用的其他量词:

?(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.
于 2012-08-29T08:33:31.063 回答