douhe4336 2016-10-13 20:41
浏览 75
已采纳

使用PHP正则表达式搜索精确的重复序列(并删除所有重复序列)

I'm looking for a regex that will find an exact repeating pattern (case-sensitive). For instance, middle initials in a name string. Examples:

  • Jim G G Bob is a match on " G " x 2
  • Jim G. G. Bob is a match on " G. " x 2
  • Tom H H H Ford is a match on " H " x 3 and so on ...
  • Sarah H Howard is NOT a match because we have "h ", "H ", and " H" (which are all unique)

I only want to keep the 1st occurrence and remove all others. What will find and remove exact duplicates?

  • 写回答

2条回答 默认 最新

  • dongteng2534 2016-10-13 20:45
    关注

    You can use this in php:

    $repl = preg_replace('/\b([a-zA-Z]\W+)\1+/u', '$1', $str);
    

    RegEx Demo

    RegEx Breakup:

    \b           # word boundary
    (            # capturing group #1 start
       pL        # match a single unicode letter 
       \W+       # match 1 or more non-word character
    )            # capturing group #1 start
    \1+          # match 1 or more of captured group #1 to match *repeats*
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制