如何使用 Gulp 正则表达式搜索匹配组文件的内容?
How to use Gulp to regex search with match groups the contents of a file?
我正在尝试创建 Gulp 版本 4 任务
- 读取给定文件的内容
- 使用正则表达式查找字符串:
Public ReadOnly isHealthy As Boolean = (True|False)
- Return 第一个匹配组中匹配的值,True 或 False。
我看过gulp-text-simple and gulp-scan (which is no longer maintained and uses depreciated gulp-util)
我找不到任何示例来说明如何做我正在寻找的事情。
这里有两种方法(我推荐第二种,但这取决于你将如何处理结果,比如你想 运行 gulp Trues 上的插件 and/or 错误)。
方法一:
const gulp = require("gulp");
const gulpif = require("gulp-if");
const path = require("path");
const noop = require("gulp-noop");
const regex = /Public ReadOnly isHealthy As Boolean = (True|False)/;
// console.log("Public ReadOnly isHealthy As Boolean = True".match(regex)); // s/b true
// console.log("Public ReadOnly isHealthy As Boolean = False".match(regex)); // s/b false
const condition = function (file) {
// here file is a vinyl file
const match = file.contents.toString().match(regex);
console.log(`${path.basename(file.path)}: ` + match[1]);
return match[1] === "True";
}
const ifRegEx = function() {
return gulp.src('./src/*.txt')
.pipe(gulpif(condition, noop(), noop()));
// .pipe(gulpif(condition, gulp.dest('./truePile'), gulp.dest('./falsePile')));
};
exports.ifRegEx = ifRegEx;
使用 gulpif
,您可以以不同于 False
的方式处理 True
- 在注释代码中,它们被复制到不同的文件夹。
方法二:
const glob = require("glob");
const files = glob.sync('./src/*.txt'); // returns an array
const fs = require("fs");
const findRegEx = function (done) {
const regex = /Public ReadOnly isHealthy As Boolean = (True|False)/;
files.forEach( file => {
let contents = fs.readFileSync(file, "UTF8");
const match = contents.match(regex);
console.log(`${file}: ` + match[1]);
// if match[1] === "True" doThis;
// else doThat;
});
done();
}
exports.findRegEx = findRegEx;
这将打印出文件名和 True/False 如:
./src/testFalse.txt: False
./src/testTrue.txt: True
./src/testTrue2.txt: True
我正在尝试创建 Gulp 版本 4 任务
- 读取给定文件的内容
- 使用正则表达式查找字符串:
Public ReadOnly isHealthy As Boolean = (True|False)
- Return 第一个匹配组中匹配的值,True 或 False。
我看过gulp-text-simple and gulp-scan (which is no longer maintained and uses depreciated gulp-util)
我找不到任何示例来说明如何做我正在寻找的事情。
这里有两种方法(我推荐第二种,但这取决于你将如何处理结果,比如你想 运行 gulp Trues 上的插件 and/or 错误)。
方法一:
const gulp = require("gulp");
const gulpif = require("gulp-if");
const path = require("path");
const noop = require("gulp-noop");
const regex = /Public ReadOnly isHealthy As Boolean = (True|False)/;
// console.log("Public ReadOnly isHealthy As Boolean = True".match(regex)); // s/b true
// console.log("Public ReadOnly isHealthy As Boolean = False".match(regex)); // s/b false
const condition = function (file) {
// here file is a vinyl file
const match = file.contents.toString().match(regex);
console.log(`${path.basename(file.path)}: ` + match[1]);
return match[1] === "True";
}
const ifRegEx = function() {
return gulp.src('./src/*.txt')
.pipe(gulpif(condition, noop(), noop()));
// .pipe(gulpif(condition, gulp.dest('./truePile'), gulp.dest('./falsePile')));
};
exports.ifRegEx = ifRegEx;
使用 gulpif
,您可以以不同于 False
的方式处理 True
- 在注释代码中,它们被复制到不同的文件夹。
方法二:
const glob = require("glob");
const files = glob.sync('./src/*.txt'); // returns an array
const fs = require("fs");
const findRegEx = function (done) {
const regex = /Public ReadOnly isHealthy As Boolean = (True|False)/;
files.forEach( file => {
let contents = fs.readFileSync(file, "UTF8");
const match = contents.match(regex);
console.log(`${file}: ` + match[1]);
// if match[1] === "True" doThis;
// else doThat;
});
done();
}
exports.findRegEx = findRegEx;
这将打印出文件名和 True/False 如:
./src/testFalse.txt: False
./src/testTrue.txt: True
./src/testTrue2.txt: True