目标:创建 ICD-10 代码的正则表达式。
格式
- 强制开头:
字母
、数字
(字母
或数字
), - 可选结尾:有一个
.
,然后最多 4 个字母或数字
我已经完成了上半场的大部分时间:
r'[A-Z][0-9][0-9]'
后半部分我被困住了:
([a-z]|[0-9]){1,4}$
如果有生成的东西,它必须有一个点。
示例:.0
或 .A9
或 .A9A9
或 .ZZZZ
或 .9999
等等
注意:我知道某些 ICD-10 代码不超过特定的数字/字母;但我对此很满意。
最佳答案
你可以使用
^[A-Z][0-9][A-Z0-9](?:\.[A-Z0-9]{1,4})?$
请参阅regex demo 。 详细信息:
^
- 字符串 anchor 的开头[A-Z]
- 大写 ASCII 字母[0-9]
- 仅 ASCII 数字[A-Z0-9]
- 大写 ASCII 字母或 ASCII 数字(?:\.[A-Z0-9]{1,4})?
- 可选序列\.
- 一个点[A-Z0-9]{1,4}
- 出现一到四次大写 ASCII 字母或 ASCII 数字
$
- 字符串 anchor 结尾(或者也可以在此处使用\Z
)。
在Python代码中,您可以使用以下代码来验证字符串输入:
icd10_rx = re.compile(r'[A-Z][0-9][A-Z0-9](?:\.[A-Z0-9]{1,4})?')
if icd10_rx.fullmatch(text):
print(f'{text} is valid!')
请注意, anchor 被省略,因为 Pattern.fullmatch
(与 re.fullmatch
相同)需要完整的字符串匹配。
关于python-3.x - python : ICD-10 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71410627/