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

如何根据给定数字模式自动生成符合指定规则的正则字符串

数字模式转规则字符串实现方案

实现代码

import re

def generate_rule_str(input_str):
    rule_parts = []
    # 遍历所有连续2的匹配段
    for match in re.finditer(r'2+', input_str):
        seg_length = match.end() - match.start()
        # 拼接单段规则,注意f-string中大括号需要双写转义
        rule_parts.append(f"2{{{seg_length},{seg_length + 2}}}[43]+")
    # 合并所有片段得到最终结果
    return ''.join(rule_parts)

# 测试用例验证
if __name__ == '__main__':
    test_samples = [
        '222243243',
        '222432243',
        '22432432243'
    ]
    for sample in test_samples:
        output = generate_rule_str(sample)
        print(f'输入"{sample}" → 输出"{output}"')

输出验证

运行上述代码会得到和示例完全一致的输出:

输入"222243243" → 输出"2{4,6}[43]+2{1,3}[43]+"
输入"222432243" → 输出"2{3,5}[43]+2{2,4}[43]+"
输入"22432432243" → 输出"2{2,4}[43]+2{1,3}[43]+2{2,4}[43]+"

逻辑说明

  • 直接通过正则匹配所有连续2的片段,无需额外存储起始、结束位置列表,直接计算每段长度即可
  • 每段连续2的匹配规则按照要求设置为原长度 ~ 原长度+2,对应格式为2{min,max}
  • 所有3、4组成的连续段统一替换为[43]+,跟在对应2段的规则之后
  • 最后将所有规则片段拼接即可得到完整目标字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:24:04