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

如何从含变体花括号的模板生成全部可能字符串?

生成花括号变体组合的所有可能字符串

这问题我之前做类似需求时碰到过,核心就是把每个花括号里的选项拆出来,做笛卡尔积组合就行,用Python实现起来特别顺手。

思路拆解

先理清楚输入字符串的结构:

  • 被{}包裹的是一组可选文本,用|分隔不同选项
  • 其他部分都是固定不变的文本

解决步骤很清晰:

  1. 把字符串拆分成「固定文本段」和「选项组」两部分
  2. 将每个选项组拆成独立的选项列表
  3. 计算所有选项组的笛卡尔积(也就是所有可能的选项组合)
  4. 把每个组合和固定文本段拼接,生成最终的所有字符串

代码实现

我写了一段Python代码,直接就能处理你给的示例:

import re
from itertools import product

def generate_all_combinations(text):
    # 用正则匹配所有{...}格式的选项组
    pattern = re.compile(r'{([^}]+)}')
    parts = []
    last_pos = 0
    # 遍历所有匹配到的选项组,拆分固定文本和选项
    for match in pattern.finditer(text):
        # 添加两个选项组之间的固定文本
        parts.append(text[last_pos:match.start()])
        # 拆分选项组为列表,可选:去掉选项里的多余空格
        options = [opt.strip() for opt in match.group(1).split('|')]
        parts.append(options)
        last_pos = match.end()
    # 添加最后一段固定文本
    parts.append(text[last_pos:])
    
    # 生成所有选项组合的笛卡尔积
    option_groups = [p for p in parts if isinstance(p, list)]
    for combo in product(*option_groups):
        # 拼接固定文本和当前选项组合
        result = []
        combo_idx = 0
        for part in parts:
            if isinstance(part, str):
                result.append(part)
            else:
                result.append(combo[combo_idx])
                combo_idx += 1
        yield ''.join(result)

# 测试你的示例输入
text = '{Hello|Good morning|Hi}{. We|, we} have a {good |best }offer for you.'
for idx, s in enumerate(generate_all_combinations(text), 1):
    print(f"{idx}. {s}")

代码说明

  • 正则r'{([^}]+)}'专门匹配{}包裹的内容,[^}]确保不会跨花括号匹配,避免解析错误
  • itertools.product用来生成所有选项组的笛卡尔积,比如你的示例有3、2、2个选项,最终会生成3×2×2=12种组合
  • 代码里的strip()是为了清理选项里的多余空格,如果你想保留原始空格(比如{good |best }里的末尾空格),删掉这一行就行

输出示例

运行代码后会输出你提到的示例,比如:

  1. Hello. We have a good offer for you.
  2. Hello. We have a best offer for you.
  3. Hello, we have a good offer for you.
  4. Hello, we have a best offer for you.
    ...(剩下的8种组合会依次输出)

注意事项

如果你的需求里出现嵌套花括号(比如{Hello|Hi {there|guy}}),上面的正则就不够用了,需要用递归或者更复杂的解析逻辑。不过从你的示例来看,平级花括号用这段代码完全没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:44:13