我有一个 less 文件,内容如下:
@background: #345602;
@imgBack: #000;
我可以将整个文本文件读取到一个变量中,然后保存修改文件的变量内容:
var lessStr = grunt.file.read('./myLessFile.less');
现在我想更改变量,例如,将 @imgBack
更改为 #ff0000
。因此,修改后的文件将如下所示:
@background: #345602;
@imgBack: #ff0000;
有什么方法可以通过正则表达式匹配和替换来做到这一点吗?请帮忙。
编辑
我的代码如下:
var str = '@black: #000;\n@grayDarker: #222;\n@grayDark: #333;\n@gray: #555;\n@grayLight: #999;';
var varName = '@black';
var replace = '#ab4564';
var regex = '(' + varName + ':\\s*)(?:#[a-z0-9]+)(.*)$';
var re = new RegExp(regex, 'm');
var replaceStr = '$1' + replace;
str.replace(re, replaceStr);
console.log(str);
但是它不起作用。我是不是搞错了什么。
最佳答案
我想你是这个意思
> var str = "@background: #345602;\n@imgBack: #000;";
> str.replace(/^(@imgBack:\s*#).*$/gm, "$1ff0000;");
'@background: #345602;\n@imgBack: #ff0000;'
更新:
> var str = '@black: #000;\n@grayDarker: #222;\n@grayDark: #333;\n@gray: #555;\n@grayLight: #999;';
undefined
> var varName = '@black';
> var regex = '(' + varName + ':\\s*)(?:#[a-z0-9]+)(.*)$';
undefined
> var re = new RegExp(regex, 'm');
> var replace = '#ab4564';
undefined
> var replaceStr = "$1" + replace;
undefined
> str.replace(re, replaceStr);
'@black: #ab4564\n@grayDarker: #222;\n@grayDark: #333;\n@gray: #555;\n@grayLight: #999;'
关于javascript - Node.js:逐行替换文本文件中模式的第二部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866631/