如何正确编写Regex以移除字符串中的数字及剂量单位?
正则替换问题修复
你的正则写法存在两个关键问题:
- 错误使用嵌套方括号,
[[ML]|G|KG|CAPS]是字符集语法,里面的|会被当成普通字符,且ML、CAPS会被拆成单个字符匹配(比如只匹配M、C),导致替换后残留部分单位字符 - 没有用分组匹配完整的单位词组,而是试图匹配单个字符
正确的正则应该用圆括号分组指定完整单位选项,同时匹配数字和单位之间的可选空格:
import re def modify_string(x): return re.sub(r"\d+\s*(?:ML|G|KG|CAPS)", "", x).strip()
正则说明:
\d+:匹配1个或多个数字\s*:匹配0个或多个空白字符(兼容数字和单位之间有空格/无空格的情况,比如150G和30 ML)(?:ML|G|KG|CAPS):非捕获分组,匹配指定的完整单位(ML/G/KG/CAPS),用|表示“或”的关系
测试你的字符串列表:
test_list = ['INSUTRIN 150G','NEUROZINE 30 ML','INSULITROL 30 CAPS'] result = [modify_string(s) for s in test_list] print(result) # 输出: ['INSUTRIN', 'NEUROZINE', 'INSULITROL']
内容的提问来源于stack exchange,提问作者Leonardo Lima Ferreira
相关产品推荐
相关产品推荐

