在 gulp 中对正则表达式捕获组进行计算
Do calculations on regex capture group in gulp
我需要编写一个脚本来将一些代码重组为新语法,同时还 multiplying\dividing 一些现有值。
TLDR:
例如我想转:
oldFunction(3, "text");
oldSize = 3;
进入
newfunction("text", 3);
newSize = 6; //notice that this is oldSize*2
我使用 gulp-replace 和 regex 管理替换和重新排序部分,但我不知道如何在 regex 捕获组中乘以数字。
已满:
更详细的例子:
font size = 34px;
text position = {5, 42};
我使用正则表达式和 gulp-replace 将其重组为新语法:
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, 'createText(, , );'))
然后我得到:
createText(5, 42, 34);
一切顺利 - 旧号码现在顺序正确!
现在,问题是:我能否在替换之前以某种方式对旧数字进行基本的数学运算(乘法、除法)?
还有。如果有更实用的工具来完成这样的任务 - 我会很乐意使用它。
您可以使用常规 anonymous callback method inside .replace
来操作组值。
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, function([=10=],,,) {
return 'createText(' + + ', ' + + ', ' + *2 + ');';
}))
最后一个值将乘以 2。
您应该考虑使用数字匹配模式 ([0-9]+
) 而不是类似通配符的 .+
(其中 .
匹配除换行符以外的任何字符)安全工作的代码。
我需要编写一个脚本来将一些代码重组为新语法,同时还 multiplying\dividing 一些现有值。
TLDR:
例如我想转:
oldFunction(3, "text");
oldSize = 3;
进入
newfunction("text", 3);
newSize = 6; //notice that this is oldSize*2
我使用 gulp-replace 和 regex 管理替换和重新排序部分,但我不知道如何在 regex 捕获组中乘以数字。
已满:
更详细的例子:
font size = 34px;
text position = {5, 42};
我使用正则表达式和 gulp-replace 将其重组为新语法:
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, 'createText(, , );'))
然后我得到:
createText(5, 42, 34);
一切顺利 - 旧号码现在顺序正确!
现在,问题是:我能否在替换之前以某种方式对旧数字进行基本的数学运算(乘法、除法)?
还有。如果有更实用的工具来完成这样的任务 - 我会很乐意使用它。
您可以使用常规 anonymous callback method inside .replace
来操作组值。
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, function([=10=],,,) {
return 'createText(' + + ', ' + + ', ' + *2 + ');';
}))
最后一个值将乘以 2。
您应该考虑使用数字匹配模式 ([0-9]+
) 而不是类似通配符的 .+
(其中 .
匹配除换行符以外的任何字符)安全工作的代码。