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

JavaScript中使用正则表达式分割字符串:特定规则下的字符串拆分实现

按特定规则拆分字符串的解决方案

问题描述

你需要拆分以下字符串:
"Vl.55.16b25.3d.42b50.59b30.90.24b35.3d.56.67b70.Tv.54b30.Vl.41b35.Tv.Bd.71b50.3d.99b20.03b50.Tv.73b50.Vl.05b25.12b40.Bd.Tv.82b25."

拆分规则如下:

  1. 每个拆分块的结尾必须是b开头后跟两位数字的格式(例如b20、b25);
  2. 满足规则1后,检查下一个部分是否是两位字符(比如3d、Tv):如果不是,就把下一个部分并入当前块,直到下一个部分是两位字符或者到达字符串末尾。

Python实现方案

我写了一个直观的函数来实现这个逻辑,代码注释已经把每一步都讲清楚了:

def split_target_string(input_str):
    # 先移除字符串末尾的多余点,再按点分割成独立片段
    split_parts = input_str.rstrip('.').split('.')
    final_blocks = []
    current_block = []

    for idx, part in enumerate(split_parts):
        current_block.append(part)
        
        # 检查当前片段是否符合"b+两位数字"的结尾规则
        if len(part) >= 3 and part.startswith('b') and part[1:].isdigit() and len(part[1:]) == 2:
            # 查看是否还有下一个片段
            if idx < len(split_parts) - 1:
                next_part = split_parts[idx + 1]
                # 如果下一个片段不是两位字符,继续合并,不结束当前块
                if len(next_part) != 2:
                    continue
            # 满足所有条件,将当前块拼接后加入结果
            final_blocks.append('.'.join(current_block))
            current_block = []
    
    # 处理最后可能遗留的有效块
    if current_block:
        final_blocks.append('.'.join(current_block))
    
    return final_blocks

# 测试用例
test_str = "Vl.55.16b25.3d.42b50.59b30.90.24b35.3d.56.67b70.Tv.54b30.Vl.41b35.Tv.Bd.71b50.3d.99b20.03b50.Tv.73b50.Vl.05b25.12b40.Bd.Tv.82b25."
result = split_target_string(test_str)
print(result)

代码逻辑拆解

  1. 预处理字符串:先去掉末尾的.,再按.分割成小片段,这样我们可以逐个处理每个单元;
  2. 构建拆分块:遍历每个片段,把它加入当前正在构建的块中;
  3. 检查结尾规则:当当前片段是bXX格式时,我们需要判断是否要结束当前块:
    • 如果下一个片段不是两位字符,说明需要继续合并,跳过结束步骤;
    • 如果下一个片段是两位字符,或者已经到了最后一个片段,就把当前块拼接成字符串,加入结果列表,然后重置当前块;
  4. 收尾处理:防止字符串末尾的块因为没有后续片段而被遗漏,最后把剩余的有效块加入结果。

运行结果

执行代码后,你会得到符合预期的拆分结果:

['Vl.55.16b25', '3d.42b50.59b30.90.24b35', '3d.56.67b70', 'Tv.54b30', 'Vl.41b35', 'Tv.Bd.71b50', '3d.99b20.03b50', 'Tv.73b50', 'Vl.05b25.12b40.Bd.Tv.82b25']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:28:14