为什么这个正则表达式前缀不起作用?

Why does this regex prefix not work?

我有一个示例数据,我正在寻找其中的匹配项。我在 Notepad++ 中测试。

QA 44
ABQ DAL 280
ABQ HOU 290
HOU PHX 210
DAL PHX 102

当我使用以下正则表达式时,我在最后四行得到了预期的匹配

([A-Z]{3}\s){2}[0-9]{3}

但是,当我尝试仔细研究末尾的 3 位数字并将其他所有内容移至前缀时,没有返回任何匹配项。

(?<=([A-Z]{3}\s){2})[0-9]{3}

我的前缀到底做错了什么?我希望所有这些 3 位数字都匹配并符合其前面的字母代码,但它不起作用。

如果你只想要最后的数字,你需要一个 none-capture 组在 look behind :

(?<=(?:[A-Z]{3}\s){2})[0-9]{3}

see demo

你有什么理由不能用锚点向后看吗?

(?<=\s)\d{3}$