Regex从空格分隔的字符串中删除连续重复项

Regex remove sequential duplicates from a space-delimited string

本文关键字:连续 删除 字符串 空格 分隔 Regex      更新时间:2023-09-26

我试图(从字符串中)只删除顺序出现的重复项。也就是说,给定字符串"1 2 3 2 1",只应删除其中一个3(即"1 2 2 3 2")。我真的以为我已经想通了。然后,在测试过程中,我发现了一个不起作用的案例。我试过我能想到的每一种组合,但都无济于事。当然,这很简单,因为这不是一场艰难的比赛(显然,除了我)。

下面是一些Javascript来说明这个问题。正确处理了第一个testVal字符串。未正确处理注释掉的testVal字符串。

// The following string should reduce to: MTC MTCA MTC ORD MTC (it does).
var testVal = "MTC MTC MTCA MTC MTC MTC ORD MTC";
// The following string should reduce to: MTC (it does not.  Result = MTC MTC).
// The string MTC MTC MTC MTC also only reduces to MTC MTC, so I'm thinking
// it's a whitespace issue.
// var testVal = "MTC MTC";
while (/'b('s*'w+'s*)'b'1/.test(testVal)) {
    testVal = testVal.replace(/'b('s*'w+'s*)'b'1/g,'$1');
}
alert(testVal1);

您将空格作为要匹配两次的单词的一部分。尝试

/'b('w+)'s+'1'b/