我的问题是早期 question 的直接扩展关于检测字符串中的连续单词(unigrams)。
在上一个问题中,
Not that that is related
可以通过这个正则表达式检测到:
\b(\w+)\s+\1\b
在这里,我想检测连续的二元组(单词对):
are blue and then and then very bright
理想情况下,我也想知道如何将检测到的模式(重复)替换为单个元素,从而最终获得:
are blue and then very bright
(对于这个应用程序,如果重要的话,我在 R 中使用
gsub
)
最佳答案
尝试以下正则表达式:
(\b.+?\b)\1\b
RegEx 将捕获一个字边界,然后是数据,然后是另一个字边界。
\1
将引用捕获的内容,然后再次选择。然后它会在结尾处检查单词边界以防止 a and
和 z zoo
从被选中至于更换,使用
\1
.这将包含来自 的数据。 1st
捕获组 (二元组的第一部分),第一部分将用于替换整个内容。Live Demo on Regex101
关于regex - 连续重复二元组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748168/