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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:15:03