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

标签 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 中查找并替换字符串中的重复模式?

预先感谢您的宝贵时间。

最佳答案

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

使用这个。查看演示。

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

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

关于regex - 使用 R 查找字符串中的重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438282/

相关文章:

Python 正则表达式 : Group Backref

r - 从 R 中的字符向量中提取数字和下一个字符串

Swift:获取字符串宽度以在 swift 2.2 中制作框架(使用 CGRect)

regex - hive 中的access_log进程

python - 在Python中从字符串中选择文本的正则表达式

r - 如何按时间间隔匹配数据帧?

带有索引/偏移量的 Ruby gsub?

c - 如何正确比较 C 中的字符串?

c - 如何更快地检查正则表达式列表

r - 从 R 正确地将日期写入 Excel