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

如何拆分键内包含下划线的下划线分隔键值对字符串?

拆分含下划线键的键值对字符串方案

一、正则表达式方法

核心思路是只匹配那些作为键值对分隔符的下划线——也就是后面紧跟「合法键(含字母、数字、下划线)+等号」的下划线,用正向预查实现精准匹配。

正则表达式

_(?=[A-Za-z0-9_]+=)
  • _:匹配目标下划线;
  • (?=[A-Za-z0-9_]+=):正向预查,确保下划线后续内容是「字母/数字/下划线组成的键 + 等号」,避免误拆分键内部的下划线。

代码示例(Python)

import re

input_str = "C_OPS_CITY=SFO_C_OPS_SITE_INDICATOR=Office_IDENTITYCATEGORY=Employee_C_OPS_COMPANY=My Company_"
# 先去除末尾多余的下划线
cleaned_str = input_str.rstrip('_')
# 执行拆分
key_value_pairs = re.split(r'_(?=[A-Za-z0-9_]+=)', cleaned_str)
print(key_value_pairs)

执行后输出:

['C_OPS_CITY=SFO', 'C_OPS_SITE_INDICATOR=Office', 'IDENTITYCATEGORY=Employee', 'C_OPS_COMPANY=My Company']

二、非正则表达式方法

通过遍历字符串手动判断下划线是否为分隔符,步骤如下:

  1. 先去除字符串末尾的多余下划线;
  2. 遍历字符串,遇到下划线时,检查后续内容是否符合「键+等号」格式;
  3. 若符合则拆分当前键值对,更新起始位置继续遍历;
  4. 遍历结束后加入最后一组键值对。

代码示例(Python)

input_str = "C_OPS_CITY=SFO_C_OPS_SITE_INDICATOR=Office_IDENTITYCATEGORY=Employee_C_OPS_COMPANY=My Company_"
cleaned_str = input_str.rstrip('_')
key_value_pairs = []
start_idx = 0
str_length = len(cleaned_str)

for i in range(str_length):
    if cleaned_str[i] == '_':
        # 查找下划线后第一个等号的位置
        next_eq_pos = cleaned_str.find('=', i + 1)
        if next_eq_pos != -1:
            # 验证等号前的内容是否为合法键(仅含字母、数字、下划线)
            candidate_key = cleaned_str[i+1:next_eq_pos]
            if all(c.isalnum() or c == '_' for c in candidate_key):
                # 拆分当前键值对
                key_value_pairs.append(cleaned_str[start_idx:i])
                start_idx = i + 1
# 加入最后一组键值对
key_value_pairs.append(cleaned_str[start_idx:])

print(key_value_pairs)

执行后同样能得到预期的键值对数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:55:08