正则表达式合并求助:提取Diagnosis Statement后16位混合字符串
合并正则直接提取目标16位字符串
我来帮你把两个正则的逻辑整合到一起,一步到位提取你需要的内容~
核心思路是:先精准定位到Diagnosis Statement:这个标记,然后直接在它后面捕获那16位字母数字混合的字符串。这里给你两种适配不同场景的正则方案:
方案1:目标字符串紧跟在冒号后(允许中间有空白)
(?ms)^Diagnosis Statement\s*:\s*(?<value>[A-Z0-9]{16})
各部分作用解析:
(?ms):同时开启多行模式和单行模式,确保^能匹配每行的开头,也能兼容标记跨行的极端情况^Diagnosis Statement\s*::匹配行首的标记文本,\s*允许标记和冒号之间有任意空白(比如空格、制表符)\s*:匹配冒号和目标字符串之间的任意空白(处理冒号后直接空格再跟目标的情况)(?<value>[A-Z0-9]{16}):把连续16位的大写字母/数字捕获到命名分组value里,方便后续直接提取
方案2:避免误匹配更长的字符串(加单词边界)
如果目标字符串后面可能紧跟其他字母/数字(比如RZZZCG77T77G355S123),担心会匹配到多余字符,可以加个单词边界\b:
(?ms)^Diagnosis Statement\s*:\s*(?<value>[A-Z0-9]{16})\b
示例测试
假设你的TXT内容是:
Patient ID: 12345 Diagnosis Statement: RZZZCG77T77G355S Report Date: 2024-05-20
用上面的正则就能精准捕获到RZZZCG77T77G355S,直接提取命名分组value的内容即可。
内容的提问来源于stack exchange,提问作者FrancescoP8
相关产品推荐
相关产品推荐

