目标:创建ICD-10代码的正则表达式.
格式化
Letter
,Digit
,( Letter
或Digit
),.
,最多4个字母或数字我上半场的大部分时间都是:
r'[A-Z][0-9][0-9]'
后半段我被困住了:
([a-z]|[0-9]){1,4}$
如果有生成的东西,它必须有一个点.
。
例如:.0
或.A9
或.A9A9
或.ZZZZ
或.9999
等。
注:我知道一些ICD-10码不会超过某个数字/字母,但我对此没有意见。
发布于 2022-03-09 14:16:05
您可以使用
^[A-Z][0-9][A-Z0-9](?:\.[A-Z0-9]{1,4})?$
见regex演示。详细信息
^
-字符串锚的启动[A-Z]
-大写ASCII字母[0-9]
- ASCII唯一的数字[A-Z0-9]
-大写字母或ASCII数字(?:\.[A-Z0-9]{1,4})?
-一个可选的序列\.
-a点[A-Z0-9]{1,4}
-一个大写字母或一个ASCII数字出现一到四次$
-字符串锚点的末端(也可以在这里使用\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!')
注意,由于Pattern.fullmatch
(与re.fullmatch
相同)需要一个完整的字符串匹配,所以没有锚。
https://stackoverflow.com/questions/71410627
复制相似问题