Regex 删除单词之间的重复字符
我正在试着做这个测验 在任务6中,问题是 哦,不!昨晚我的朋友们好像把啤酒洒得我键盘上到处都是,现在我的键盘粘得很厉害。有些时候,当我按下一个键时,我会得到两个副本。你能帮我修一下吗?应删除粗体内容 我试过了Regex 删除单词之间的重复字符,regex,Regex,我正在试着做这个测验 在任务6中,问题是 哦,不!昨晚我的朋友们好像把啤酒洒得我键盘上到处都是,现在我的键盘粘得很厉害。有些时候,当我按下一个键时,我会得到两个副本。你能帮我修一下吗?应删除粗体内容 我试过了 但无法得到解决方案 该网站上的谜语解决方案是: /(.)\1{2}/g 因为键盘上的任何键都可能卡住,所以我们需要使用 正则表达式中的\1表示匹配第一个捕获组(.)匹配的内容 替换为$1或\1 您的正则表达式的其余部分是正确的,只是存在不必要的捕获组。如果您希望恰好匹配三个字符,则您的正
但无法得到解决方案 该网站上的谜语解决方案是:
/(.)\1{2}/g
因为键盘上的任何键都可能卡住,所以我们需要使用
正则表达式中的\1
表示匹配第一个捕获组(.)匹配的内容
替换为$1
或\1
您的正则表达式的其余部分是正确的,只是存在不必要的捕获组。如果您希望恰好匹配三个字符,则您的正则表达式是正确的。如果你想匹配至少三个,那就是
([a-z])(\1{2,})
或
由于您只需要捕获第一次发生的事件,因此这些事件稍微好一些:
([a-z])\1{2} # your original regex (exactly three occurences)
([a-z])\1{2,}
([a-z])\1\1+
现在,替换应该正好是角色的一次出现,仅此而已:
\1
我想用(\w)(\1+)
来做,但找不到如何在给定的站点中“删除”
最好的方法是用空字符串替换secound匹配的结果替换:
(.)\1+
与:
这当然需要您的正则表达式引擎支持反向引用。。。此外,在替换部件中,根据regex引擎,\1
可能必须写成$1
,字面意思是“字符重复两次以上”这意味着ppp
仍然可以,因为p
重复了整整两次…@om39a该测验使用了什么版本的regex?我刚刚用正确的问题陈述编辑了问题。根据问题陈述,一个键可以产生1或3个字符,问题要求将重复的3个实例替换为1。捕获组太多,您需要捕获的只是第一个字符。@NHAHDH删除了“您不需要”部分。但除了+之外,我们应该使用{2}根据问题和NHAHDH的解释,老实说,我没有看确切的问题(站点需要JavaScript和登录等),因此如果第一个令牌之外需要两个令牌,那么是的;)@nhahtdh\1是什么意思?
\1
(.)\1+
\1