Python如何使用正则表达式从不同格式字符串中提取多个指定值
字符串解析实现方案
核心逻辑
先通过正则匹配所有键:值结构,若匹配结果为空则直接返回原字符串,若有匹配则统一转换为键=值的格式输出。
正则说明
使用的正则规则为 r'(\w+)\s*:\s*([^,]*)',各部分作用:
(\w+):匹配键名,支持大小写字母、数字、下划线,覆盖示例中所有键的格式\s*:\s*:匹配键值之间的冒号,允许冒号前后存在任意空白字符,适配空格不规范的输入([^,]*):匹配值内容,一直匹配到下一个逗号之前停止,允许值为空、包含冒号、斜杠、横杠等特殊字符,适配所有示例中的值格式
代码示例(Python)
import re # 预编译正则 kv_pattern = re.compile(r'(\w+)\s*:\s*([^,]*)') def process_input(s: str) -> str: matches = kv_pattern.findall(s) # 没有匹配到键值对,直接返回原字符串包裹引号 if not matches: return f'"{s}"' # 转换为要求的格式 res_list = [f'"{key}={value.strip()}"' for key, value in matches] return ','.join(res_list)
测试效果
针对给出的三个示例测试结果如下:
- 输入示例1:
"RB2 F 27/0/31 0/32, R8 28/31/120 2/0/2",输出:"RB2 F 27/0/31 0/32, R8 28/31/120 2/0/2" - 输入示例2:
"TYPE :ABC,NAME: AB.DE,DESC:10/10/5:2,COMMENT: , ID:123",输出:"TYPE=ABC","NAME=AB.DE","DESC=10/10/5:2","COMMENT=","ID=123" - 输入示例3:
"ID:123, NAME:CDE,DESC:10-10/5:2",输出:"ID=123","NAME=CDE","DESC=10-10/5:2"
内容的提问来源于stack exchange,提问作者IHeilig
相关产品推荐
相关产品推荐

