我的问题与标题为“重复单词的正则表达式”的问题类似,但我有一些额外的要求。
hello hello me now now @@@ @@@ @@@ then method me @@@
我想要的结果是:
hello me now @@@ then method me @@@
使用
/(?<=(\S+)\s+)\1\s+/g
这是一个它的工作演示
现在我将解释创建这个正则表达式的过程。首先,我们先明确一下目标。目标是匹配任何与前一个单词相同的单词,这样我们就可以,即什么都不替换。那么让我们逐步完成整个过程:
第一步是匹配字符串中的每个单词。通常您会使用\w+
\S+
匹配所有不被视为空白的字符。请注意,它匹配“@@@”以及普通单词。
\S+
周围放置括号),然后refer到我们匹配中捕获的组(用
\S+
替换我们原来的\1
)。
\s+
/(?<=(\S+)\s+)\1\s+/g