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

如何调整正则表达式以匹配含空格的键值对值?

正则调整方案

原有正则的问题

  1. 未匹配键名前的--前缀,和实际--key=value的格式不符
  2. value用\w+仅能匹配字母、数字、下划线,无法处理带空格、特殊字符的值
  3. 错误用\s+分隔键和值,实际键值对是通过=连接的

调整后的正则表达式

import re

# 基础版:匹配值到下一个--前缀或字符串结尾
pattern = r'--(?P<key>\w+)=(?P<value>.+?)(?=\s--|$)'

# 测试示例
test_cases = [
    "--key1=this is value 1 --key2=value2",
    "--key1=only kvp",
    "--key1=this/doesnt/work/"
]

for case in test_cases:
    matches = re.findall(pattern, case)
    print(matches)

正则规则解释

  • --:精准匹配键名前的固定前缀
  • (?P<key>\w+):捕获键名(假设键名仅包含字母、数字、下划线,符合常见命令行参数命名逻辑)
  • =:匹配键与值之间的分隔符
  • (?P<value>.+?):非贪婪模式匹配任意字符(默认不含换行),避免把下一个键值对的内容包含进来
  • (?=\s--|$):正向预查边界,确保值的结束位置是下一个键的--前缀(前面带空格)或字符串末尾

扩展:支持带换行的值

如果值中包含换行符,需添加re.DOTALL标志,让.可以匹配换行:

matches = re.findall(pattern, case, flags=re.DOTALL)

内容的提问来源于stack exchange,提问作者chrisans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:27:13