• 前端路上的小学生
    2020-06-18
    思考题答案是: (\w+)(\s+\1)+ 解题的思路是:\w+ 用于选中出现一次到多次的字母,由于默认贪婪匹配最长,所以能选中每个单词,由于是要找出重复的单词,所以要用第一次匹配成功的结果即使用分组 (\w+) \1,到此可以拿到重复两次场景的结果,对于重复两次以上的结果,需要重复刚刚的行为,但是不能一直叠加 \1 ,自然想到了 +,得到了 (\w+) (\1)+,发现匹配不成功,在这里卡壳了一段时间没想明白,翻到别人的答案才猛然想起来单词之间应该有空隙,(\1)+不能表示空隙,用\s代替敲出来的空格最终得到 (\w+)(\s+\1)+ 晚上比较晚了脑子转不动了

    作者回复: 哈哈,写完了要动手试一试才知道能不能用,感谢分享。

    共 5 条评论
    21
  • ElliON
    2020-07-07
    先讲一讲(\w+) \1 为什么这能匹配出来连续重复字符? (\w+)代表分组,此时只有一个分组,“\1”代表第一个分组的内容 于是,该正则意思是:某单词+空格+某单词,这样就实现了连续重复单词的匹配 (\w+)( \1)+

    作者回复: 对的

    共 3 条评论
    11
  • Zion W.
    2020-06-28
    综合了大家的以后写出的 查找:/(\b\w+)(?:\s+\1)+/g 替换:\1

    作者回复: 没问题,多看大家的答案有时候会有意想不到的收获

    共 3 条评论
    8
  • William
    2020-06-23
    老师,纠正一个错误。 JavaScript中,查找时必须用 \ 引用,替换时用 $。 node 和 Chrome中均是这样,查找时用 $ 无效。 let str = `the little cat cat is in the hat hat hat, we like it.` let res = str.replace(/(\w+)(\s$1)+/g, '$1') console.log(res)

    作者回复: 感谢指出,我更正下

    共 5 条评论
    7
  • Robot
    2020-06-18
    课后思考: /(\b\w+)(\s\1)+/g

    作者回复: 赞,一看就是有经验,断言单词边界都用上了

    共 3 条评论
    6
  • furuhata
    2020-06-17
    课后思考题: 正则:(\w+)(\s\1)+ 替换:\1

    作者回复: 没问题

    共 3 条评论
    6
  • 虹炎
    2020-06-17
    (\w+) (\s+\1)+ \1 我的答案。连续出现多次单词,可能有多个空格,所以用了\s+

    作者回复: 赞,考虑的很全面

    
    2
  • Johnson
    2020-06-17
    正则查找部分:(\w+)(.\1)+ 正则替换部分:\1 初学者学习中,请老师多多指教。

    作者回复: 没问题,空格可以用\s,尽量不用点,因为匹配的内容不精确。

    
    2
  • Juntíng
    2020-06-18
    JavaScript 使用引用编号查找时, \number 和 $number 两者引用方式都可以,替换时用的是 $number 的方式。regex101 网站上 ECMAScript 模式下查找引用方式 $number 就不能使用了。 let reg = /(\w+) \1/gm; let reg1 = /(\w+) $1/gm; 'the little cat cat is in the hat hat, we like it.'.replace(reg, '$1'); 'the little cat cat is in the hat hat, we like it.'.replace(reg1, '$1');

    作者回复: 动手练习点赞,感谢分享

    共 3 条评论
    1
  • 唐龙
    2020-06-17
    匹配:`<(\w+)(?:\s\1)+>` 替换:`\1` 顺便吐槽一下vim末行模式的正则,可读性贼差,它有些符号要在前面加上反斜杠`\`,还有一些细节也不太一样。最后写完了大概长这样: ```:%s/\<\(\w\+\)\%(\s\1\)\+\>/\1/g``` 前两个正斜杠`/`中间的是匹配的内容,后两个正斜杠`/`中间的是替换后的内容。 其中`\%(`表示`(?:`,其余的就是各种符号要多一个反斜杠`\`,脑阔痛。

    作者回复: 感谢分享,多加练习才能更好地掌握。 转义确实非常让人头痛,很麻烦

    共 3 条评论
    1