这是为什么
.+组合可能是邪恶的经典示例。请改用否定字符集:
(${(b[a-zA-Z0-9]+b)})([([^]]+)]) ^^^您可以在这里尝试。
比较两个表达式的行为:
贪婪地搭配任何东西。对于第二个匹配,正则表达式会贪婪地匹配任何东西。它会匹配所有内容,直到到达字符串末尾为止,然后必须回溯直到找到
]
。一旦找到a]
,它就会停止,因此最终将您[arg1] - ${test2}[arg2]作为匹配项。匹配除以外的任何内容
]
。这里的正则表达式匹配的不是a的任何内容]
,因此在每一步都要检查下一个是否为a]
。对于第二场比赛,您可以看到,一旦找到]
,它就会停止。



