我有2个非常大的txt文件,文件A包含一些字符串,并且在文件上BI具有我将在文件A上搜索的所有字符串。
实际上我将文件B转换为数组,并使用fs加载了文件A。问题是文件B包含一些奇怪的字符串,例如R<f(9f
,所以当我与regexp匹配时,程序退出并显示错误消息/: Unterminated groupregular expression: /R<f(9f
。
因此,我想做的是正则表达式匹配将字符当作字符串而不是作为指令来“处理”。
console.time('program');
const fs = require('fs');
const filePath = "./processhackerfile.txt";
const hackStringsPath = "./hackstrings.txt";
var hackStrings = fs.readFileSync(hackStringsPath).toString().split("\n");
console.log(hackStrings.length);
var file = fs.readFileSync(filePath).toString();
for(i in hackStrings){
var regex = new RegExp(hackStrings[i].toString(), 'i');
var stringSearch = file.match(regex);
if(stringSearch != null){
console.log(`Cheat found, string name: ${stringSearch}`);
} else {
console.log('Cheat not found');
}
}
console.timeEnd('program');
您可以找到代码here
答案 0 :(得分:0)
您需要对字符串进行转义以在正则表达式中逐字使用。不幸的是,似乎没有内置方法可以执行此操作,但是可以使用npm软件包,例如:https://www.npmjs.com/package/escape-string-regexp