我有一个很大的文本,其中包含以下表达式:"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*\\b
和 perl=TRUE
选项。
关于regex - 使用 R 查找字符串中的重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438282/