通过正则表达式反向读取或抓取最后一个没有尾巴的匹配

时间:2016-07-28 12:56:04

标签: regex regex-negation regex-lookarounds regex-greedy

之后我需要抓住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,这是我不想要的。 有时,空格,没有空格或 - 数字和字母之间的字符块。

非常感谢。

1 个答案:

答案 0 :(得分:0)

根据您发布的内容

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

Demo