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

Perl单行命令如何将匹配的模式按捕获的数字n重复对应次数?

Perl单行命令实现Power模式的泛化递归替换

你可以使用Perl替换的/e执行修饰符实现需求,最终单行命令如下:

perl -pe 'while(s/Power\(((?:(?!Power\().)+?),(\d+)\)/"(" . join("*", ("($1)") x $2) . ")"/e){}' file.txt

实现说明

  • 正则捕获部分将原硬编码的2改为(\d+),将匹配到的任意幂次存入捕获组$2
  • 替换规则末尾添加/e修饰符,支持将替换段内容作为Perl代码执行,返回执行结果作为实际替换值
  • 替换逻辑用("($1)") x $2将包裹了括号的待乘内容重复n次,再通过join("*", ...)将重复内容用乘号拼接,最外层额外套一层括号匹配要求的输出格式

效果验证

针对示例输入Power(Power(x,3),2),执行逻辑为:

  1. 优先匹配最内层的Power(x,3),替换结果为((x)*(x)*(x))
  2. 外层表达式变为Power(((x)*(x)*(x)),2),再次匹配替换后得到最终结果(((x)*(x)*(x))*((x)*(x)*(x))),符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:03