如何使用python regex/re确保字符串中的最后2个字符至少有一个数字

如何使用python regex/re确保字符串中的最后2个字符至少有一个数字,python,regex,re,Python,Regex,Re,我正试图解析一些特定的文本,如下所示。我已经尝试将python re与 r'[A-Z]{5}[A-Z0-9]{2}'表达式,但这也给了我不需要的文本。有关预期输出,请参见下文 条件: 字符串应总共为7个字符 字符串最后2个字符应仅为2位或至少有1位带有[A-Z]字母 给定字符串: “DHKGNC1、DHK32、DHKGN1K、部分、垃圾、文本” 预期输出:['DHKGNC1','DHDHK32','DHKGN1K'] 实际输出:['DHKGNC1','DHDHK32','DHKGN1K','

我正试图解析一些特定的文本,如下所示。我已经尝试将python re与
r'[A-Z]{5}[A-Z0-9]{2}'
表达式,但这也给了我不需要的文本。有关预期输出,请参见下文

条件:

  • 字符串应总共为7个字符
  • 字符串最后2个字符应仅为2位或至少有1位带有[A-Z]字母
  • 给定字符串:
    “DHKGNC1、DHK32、DHKGN1K、部分、垃圾、文本”

    预期输出:
    ['DHKGNC1','DHDHK32','DHKGN1K']

    实际输出:
    ['DHKGNC1','DHDHK32','DHKGN1K','GARBAGE']


    提前感谢。

    不要使用
    [A-Z0-9]{2}
    ,使用
    ([A-Z0-9][0-9])|([0-9][A-Z0-9])

    也就是说,其中一个必须是数字

    re.findall(r'([A-Z]{5}(?:(?:[A-Z0-9][0-9])|(?:[0-9][A-Z0-9])))', "DHKGNC1, DHDHK32, DHKGN1K, SOME, GARBAGE, TEXT")
    ['DHKGNC1', 'DHDHK32', 'DHKGN1K']
    

    我认为以下正则表达式可能有效:

    [A-Z]{5}([A-Z]?[0-9]{1,2}[A-Z]?)
    

    [A-z]
    的定义不是很明确;你的意思是
    [A-Z]
    ?是的,抱歉是指A-Z。你已经编辑了原始答案