Python 适用于所有国家药品代码 (NDC 10 和 11) 格式的正则表达式

Python RegEx for all National Drug Codes (NDC 10 & 11) formats

目标:RegEx 以适应许多可能的 NDC 10 和 11 格式。

我有了一个很好的开始... 国家数据中心 10:

^[0-9][0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]\-[0-9][0-9]$

例如1234-1234-12 Reference


不过,我后来了解到还有其他格式和 11 位数字:

如何为所有这些可能性编写一个正则表达式?

问题:

  1. 可选第11位,
  2. 移动连字符

您可以使用

^(?:\d{4}-\d{4}-\d{2}|\d{5}-(?:\d{3}-\d{2}|\d{4}-\d{1,2}))$

regex demo详情:

  • ^ - 字符串开头
  • (?: - 第一个 non-capturing 组的开始:
    • \d{4}-\d{4}-\d{2} - 四位数,-,四位数,-,两位数
    • | - 或
    • \d{5}- - 五位数,-
    • (?: - 第二个 non-capturing 组的开始:
      • \d{3}-\d{2} - 三位数,-,两位数
      • | - 或
      • \d{4}-\d{1,2} - 四位数字,- 和一位或两位数字
    • ) - 第二个non-capturing组结束
  • ) - 第一个 non-capturing 组结束。
  • $ - 字符串结尾。