通过正则表达式反向读取或抓住没有尾巴的最后一场比赛

Reverse reading via regex or grabbing last match with no tail

之后我需要抓取 2 个字符的字母和数字:

我想要的是:

AB 12 CD-12345-67   -> CD-12345
AB12 CD 12345-67 ->  CD 12345 
AB-12CD12345-6 ->  CD12345
ABC1234556 -> no match, as I look for 2 character letter and numbers after that.
ABC-1234556 -> no match, as I look for 2 character letter and numbers after that.
A1-BC-12D345-56 -> no match, after 2 characters letter, numbers must come 

我使用了这个正则表达式

 [A-Z]{2}[ |\-]?\d+

在第一个例子中,它抓取了 CD-12345 和 AB 12。我只需要 CD-12345。它还在我不想要的最后三个示例中获取了 BC1234556、BC-1234556、BC-12。 有时,space,没有 space 或 - 数字和字母块之间的字符。

非常感谢。

根据您发布的内容

^.*(?<![A-Z])([A-Z]{2}[- ]?\d++)(?![A-Z])

Demo