如何在Sublime Text中用正则将匹配内容替换为自身的n次重复?
Sublime Text 的正则替换功能基于Boost正则引擎,替换域仅支持反向引用($1/\1这类格式)和普通字面文本,不支持在替换侧直接使用{n}量词重复捕获到的内容,你之前写的$1{30}会被解析为「第一个捕获组内容 + 字面量{30}」,自然无法达到预期效果。
实现需求的两种方案
方案1:直接拼接反向引用(适合固定重复次数的简单场景)
直接在替换框输入30个$1即可,匹配到的内容会自动替换为30次重复的结果:
替换框输入内容:$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1
方案2:通过控制台执行可编程替换(适合重复次数灵活、或重复量级较大的场景)
如果不想手动拼接多个$1,可以按快捷键调出Sublime内置的Python控制台:
- Windows/Linux:快捷键 `Ctrl+``
- Mac:快捷键 `Cmd+``
在控制台输入以下代码执行即可:
# 可自定义重复次数 repeat_num = 30 view.run_command( "replace_all", { "find": "(Hi)", "replace": "$1" * repeat_num, "regex": True } )
内容的提问来源于stack exchange,提问作者user17038038
相关产品推荐
相关产品推荐

