You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中移除连续重复单词的正则表达式(\b\S+)( \1\b)+解析

移除连续重复单词的正则表达式解析

先明确需求:输入字符串 "alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta",要得到移除连续重复单词后的结果 "alpha beta gamma delta alpha beta gamma delta",这段Java代码靠正则表达式实现了这个功能。

下面拆解这个正则(\b\S+)( \1\b)+的关键部分,重点解答你疑惑的地方:

  • 第一分组(\b\S+):

    • \b是单词边界,保证我们匹配的是完整单词的起始位置,不会从单词中间开始匹配
    • \S+匹配一个或多个非空白字符,也就是完整的单个单词,这个单词会被存为第1个捕获分组
  • 你疑问的( \1\b)+部分:

    • 开头的空格:这个空格是用来匹配重复单词前面的分隔空格的——原字符串里单词都是用空格隔开的,连续重复的单词必然跟在前一个单词的空格后面(比如beta beta里第二个beta前的空格),这个空格就是用来精准定位「连续的、空格分隔的重复单词」,避免误匹配单词内部的重复字符(比如aaa这种单单词里的重复不会被处理)。
    • \1是反向引用第1分组捕获到的单词,也就是和前面那个单词完全一样的内容
    • \b再次用单词边界,确保匹配的是完整的重复单词,不会出现比如beta betaa这种只匹配部分字符的错误情况
    • +表示这个「空格+重复单词+单词边界」的组合可以出现1次或多次,这样就能一次性处理像gamma gamma gamma这种连续重复多次的场景

举个实际例子:原字符串里的gamma gamma gamma,正则会捕获第一个gamma作为分组1,然后匹配后面的 gamma gamma(两次「空格+gamma+边界」的组合),最后替换成分组1的内容gamma,就完成了多重复单词的去重。

内容的提问来源于stack exchange,提问作者Rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:43:12