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 位数字:
- 4-4-2
- 5-3-2
- 5-4-1
- 5-4-2 (11 位数)
如何为所有这些可能性编写一个正则表达式?
问题:
- 可选第11位,
- 移动连字符
您可以使用
^(?:\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 组结束。
$
- 字符串结尾。
目标: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 位数字:
- 4-4-2
- 5-3-2
- 5-4-1
- 5-4-2 (11 位数)
如何为所有这些可能性编写一个正则表达式?
问题:
- 可选第11位,
- 移动连字符
您可以使用
^(?:\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 组结束。$
- 字符串结尾。