/:无终止组正则表达式:/ R <f(9f

时间:2018-08-24 15:28:36

标签: javascript node.js regex fs

=“”

我有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

1 个答案:

答案 0 :(得分:0)

您需要对字符串进行转义以在正则表达式中逐字使用。不幸的是,似乎没有内置方法可以执行此操作,但是可以使用npm软件包,例如:https://www.npmjs.com/package/escape-string-regexp