【发布时间】:2021-12-26 17:55:45
【问题描述】:
我已经匹配了一个特定的模式,另外还有一个数字通过
perl -pe 's/\(pattern\)(\d)/ ... /'
我知道我可以通过将 $1 放在 ... 所在的位置和使用 $2 的数字来访问该模式。我现在如何在 ... 所在的位置重复模式 $2 次? 更具体地说,我有这样的表达:
perl -pe 'while(s/Power\(((?:(?!Power\().)+?),2\)/(($1)*($1))/){}' file.txt
我想将其概括为不仅匹配 2,它在其中被硬编码为重复 $1 两次,而且匹配任何数字 n 并重复 $1 n 次。所有这些仍应在 oneliner 中完成。
例如,将脚本调用到表达式上
Power(Power(x,3),2)
应该返回
(((x)*(x)*(x))*((x)*(x)*(x)))
【问题讨论】:
-
为什么一定要单线?
-
输入/输出的几个例子会有帮助。
-
@stark 从技术上讲它不需要,但对我来说实现到我现有的脚本中是最容易的。 @Dada 我会在原问题上补充一些