我正在尝试解析数据-i18n'具有自定义正则表达式的html文件中的属性(也使用默认的i18n.t函数):
i18next modules/ -o lang/ -r '[^a-zA-Z0-9](?:(?:t)|(?:i18n\\.t)|(?:data-i18n))(?:\\(|\\s|=)\\s*(?:(?:\'((?:(?:\\\\\')?[^\']+)+[^\\\\])\')|(?:"((?:(?:\\\\")?[^"]+)+[^\\\\])"))'
解析器可以在这里找到: https://github.com/karellm/i18next-parser
来自文档的命令:
i18next /path/to/file/or/dir -r "(.*)"
正则表达式已经在regexpal和debuggex上进行了测试,它匹配了正确的标签:
[^a-zA-Z0-9](?:(?:t)|(?:i18n\.t)|(?:data-i18n))(?:\(|\s|=)\s*(?:(?:'((?:(?:\\')?[^']+)+[^\\])')|(?:"((?:(?:\\")?[^"]+)+[^\\])"))
我尝试以各种形式转义正则表达式字符串,但它无法正常工作。 怎么做得好?
答案 0 :(得分:2)
考虑使用gulp如下:
var i18next = require("i18next-parser");
var gulp = require("gulp");
gulp.task("i18next-parse", function () {
gulp.src("js/modules/**")
.pipe(i18next({locales: ['en', 'hu'],
parser: '[^a-zA-Z0-9](?:(?:t)|(?:i18n\\.t)|(?:data-i18n))(?:\\(|\\s|=)\\s*(?:(?:\'((?:(?:\\\\\')?[^\']+)+[^\\\\])\')|(?:"((?:(?:\\\\")?[^"]+)+[^\\\\])"))',
output: "js/lang"})
.on('reading', function(path) {
console.log("Reading: " + path);
})
.on('writing', function(path) {
console.log("Writing: " + path);
}))
.pipe(gulp.dest('js/lang'));
});
你可以通过这种方式传递正则表达式(当你试图传递命令行时这就是问题。)