使用R在字符串中查找重复的模式

时间:2015-04-03 19:13:13

标签: regex r string

我有一个大文本,包含处理后的"aaaahahahahaha that was a good joke".等表达式,我希望"aaaaahahahaha"消失,或者至少将其更改为"ha"

目前,我正在使用它:

gsub('(.+?)\\1', '', str)

当带有模式的字符串位于句子的开头,而不是位于其他任何位置的位置时,此方法有效。所以:

str <- "aaaahahahahaha that was a good joke"
gsub('(.+?)\\1', '', str)
#[1] "ha that was a good joke"`

但是

 str <- "that was aaaahahahahaha a good joke"
 gsub('(.+?)\\1', '', str)
#[1] "that was aaaahahahahaha a good joke"

这个问题可能与此有关:find repeated pattern in python,但我无法在R中找到等价物。

我假设非常简单,也许我错过了一些微不足道的东西,但由于正则表达不是我的力量而且我已经尝试了一些没有用的东西,我想知道是否有人可以帮助我。问题是:如何在R?

中的字符串中查找和替换重复的模式

提前感谢您的时间。

1 个答案:

答案 0 :(得分:5)

\b(\S+?)\1\S*\b

使用此功能。参见演示。

https://regex101.com/r/sJ9gM7/46

r \\b(\\S+?)\\1\\S*\\b使用perl=TRUE选项。