You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python re模块匹配拆分ICD编码格式字符串为指定列表

正确正则匹配规则实现

你之前的写法问题出在使用了贪婪匹配,且没有明确匹配终止边界,导致会一直匹配到字符串末尾,无法自动在下一个编码开始前截断。

匹配逻辑说明

结合你给出的编码规则和分隔规则,我们使用「非贪婪匹配+正向预查」实现边界识别:

  • 先精准匹配编码格式:大写字母开头,包含1个小数点的数字,末尾可选小写字母
  • 非贪婪匹配编码后的描述内容
  • 通过正向预查判断终止位置:要么遇到下一个编码前的, 分隔符,要么到字符串末尾

完整实现代码

import re

string = 'M43.16: Spondylolisthesis, lumbar region, ' \
    'M51.27: Other intervertebral disc displacement, lumbosacral region, ' \
    'M54.17: Radiculopathy, lumbosacral region'

result = re.findall(r'[A-Z]\d+\.\d+[a-z]?:.*?(?=, [A-Z]\d+\.\d+|$)', string)
print(result)

输出结果

['M43.16: Spondylolisthesis, lumbar region', 'M51.27: Other intervertebral disc displacement, lumbosacral region', 'M54.17: Radiculopathy, lumbosacral region']

正则各部分解释

  • [A-Z]:匹配编码开头的大写字母
  • \d+\.\d+:匹配编码中带1个小数点的数字部分
  • [a-z]?:匹配编码末尾可选的小写字母
  • ::匹配编码后的固定冒号分隔符
  • .*?:非贪婪匹配后续描述内容,避免跨条目匹配
  • (?=, [A-Z]\d+\.\d+|$):正向零宽预查,匹配到下一个编码前的, 分隔符或者字符串末尾时停止,不会消耗分隔符内容

可选调整:如果你的编码规则允许开头有多个大写字母(比如AB12.34c格式),可将正则开头的[A-Z]调整为[A-Z]+即可适配。

内容的提问来源于stack exchange,提问作者Dr.Prime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:15:03