在 gulp 中对正则表达式捕获组进行计算



我需要编写一个脚本来将一些代码重组为新语法,同时还要乘以/除一些当前值。

TLDR:

例如,我想转:

oldFunction(3, "text");
oldSize = 3;

newfunction("text", 3);
newSize = 6; //notice that this is oldSize*2

我用 gulp-replace 和正则表达式管理了替换和重新排序部分,但我不知道如何在正则表达式捕获组中乘以数字。

满:

更详细的示例:

font size = 34px;
text position = {5, 42};

我使用正则表达式和 gulp-replace 将其重组为新语法:

.pipe($.replace(/font size = (.+)px;ntext position = {(.+), (.+)}/g, 'createText($2, $3, $1);'))

我得到:

createText(5, 42, 34);

一切都很好 - 旧号码现在按所有正确的顺序排列!

现在,问题是:我可以在替换旧数字之前以某种方式对旧数字进行基本的数学操作(乘法、除法(吗?

也。如果有更实用的工具来完成这样的任务 - 我很乐意使用它。

您可以在

.replace中使用常规的匿名回调方法来操作组值。

.pipe($.replace(/font size = (.+)px;ntext position = {(.+), (.+)}/g, function($0,$1,$2,$3) { 
    return 'createText(' + $2 + ', ' + $3 + ', ' + $1*2 + ');'; 
 }))

最后一个值将乘以 2。

您应该考虑使用数字匹配模式 ( [0-9]+ ( 而不是类似通配符的.+(其中.匹配除换行符之外的任何字符(,以使此类代码安全工作。

相关内容

  • 没有找到相关文章

最新更新