假设我想从字符串daaaaab * aabdcd *中提取后缀字符串“ aabdcd ”,则在KSH中使用以下表达式,
$ {EX ##的 + ([!B])+([B])}
这意味着匹配并删除“b”以外的任何字符,然后是字符“b”。我不明白的是前面的+(以粗体突出显示)。为什么需要它?没有它,正则表达式无法完成预期的工作。
#ex=daaaaabaabdcd
#echo ${ex##([!b])+([b])}
daaaaabaabdcd
#echo ${ex##+([!b])+([b])}
aabdcd
答案 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.