【问题标题】:How to make sure that in a string last 2 characters have at least one digit with python regex如何确保在字符串中的最后 2 个字符至少有一个数字与 python 正则表达式
【发布时间】:2021-06-10 04:11:07
【问题描述】:

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

条件:

  1. 字符串总共应包含 7 个字符。
  2. 字符串的最后 2 个字符应该只有 2 位或至少有 1 位带有 [A-Z] 字母的数字

给定字符串: "DHKGNC1, DHDHK32, DHKGN1K, SOME, GARBAGE, TEXT"

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

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

【问题讨论】:

    标签: python regex python-re


    【解决方案1】:

    不要使用[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']
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • [A-z] 的定义并不明确;你的意思是[A-Z]
      • 是的,抱歉的意思是 A-Z。已编辑原始答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2011-07-28
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多