我正在编写一个 Javascript 代码来解析一些语法文件,这是相当多的代码,但我会在这里发布相关信息。我正在使用 Javascript Regexp 来匹配字符串中包含的重复行。字符串包含,例如(假设字符串名称是行):
如果 别的 ; 打印 { } 测试1 测试1 = + - * / ( ) 数 细绳 评论 ID 测试2 测试2
应该发生的是在“test1”和“test2”上找到的匹配项。然后它应该删除重复项,留下 test1 和 test2 的 1 个实例。正在发生的事情根本不是对手。我对我的正则表达式很有信心,但 javascript 可能会做一些我没想到的事情。这是对上面给出的字符串进行处理的代码:
var rex = new RegExp("(.*)(\r?\n\1)+","g");
var re = '/(.*)(\r?\n\1)+/g';
rex.lastIndex = 0;
var m = rex.exec(lines);
if (m) {
alert("Found Duplicate");
var linenum = lines.search(re); //Get line number of error
alert("Error: Symbol Defined twice\n");
alert("Error occured on line: " + linenum);
lines = lines.replace(rex,""); //Gets rid of the duplicate
}
它永远不会进入 if(m) 语句。因此找不到匹配项。我在这里测试了正则表达式:http: //regexpal.com/ 在我的代码中使用正则表达式以及提供的示例文本。它匹配得很好,所以我有点不知所措。如果有人可以提供帮助,那就太好了。
谢谢你。
编辑:忘了补充,我在firefox中测试这个,它只需要在firefox中工作。不确定这是否重要。