regex - 连续重复二元组的正则表达式

标签 regex r gsub

我的问题是早期 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 andz zoo从被选中

至于更换,使用\1 .这将包含来自 的数据。 1st捕获组 (二元组的第一部分),第一部分将用于替换整个内容。

Live Demo on Regex101

关于regex - 连续重复二元组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748168/

相关文章:

删除数字后的括号,保留数字

ruby - 如何使用gsub简化正则表达式

r - 有条件地用数字列中的点替换逗号

Javascript for 循环未正确相加

c# - 如何在多行字符串中转义引号? C#

r - dplyr - 根据条件从两个不同的数据帧中减去

r - 合并具有多个匹配项的数据框时仅选择第一行

Javascript 测试正则表达式的虚假值

php - 将 PHP 结束标记转换为注释

r - 如何根据 R 中某个组的某些观察结果对箱形图上的数据点进行着色