正则表达式替换重复的字符

时间:2015-02-04 12:03:56

标签: regex

我有一个全文搜索,我需要只有一个加入的字符,但有时我会收到多个。

E.g。 要搜索Java Objects,客户端会使用+替换空格,因此服务器会搜索Server+Objects。这一切都很好,但有时用户会输入Java Objects,这将以Java+++Objects的形式到达服务器,我的全文搜索失败。

我需要将+++的所有匹配项替换为+,请注意我可能会收到类似Java+++Objects++With+Names+like++++Abstract的查询。

我可以编写一些代码来删除它们,但我知道正在使用正则表达式会更干净但我可耻地没有花太多时间学习它们。

1 个答案:

答案 0 :(得分:2)

以下是替换所有重复字符的示例(您没有指定语言,所以我在我的示例中使用了perl s //运算符):

s/(.)\1+/\1/g;

""在这种模式中你正在寻找。例如,如果您只想替换重复的非空白字符,请使用:

s/(\W)\1+/\1/g;

请参阅https://www.regex101.com/r/oL2mW5/1

上的示例