gpt4 book ai didi

使用正则表达式替换重复的字符组

转载 作者:行者123 更新时间:2023-12-04 03:12:37 26 4
gpt4 key购买 nike

在 R 中,我有一个字符串,其中包含重复的字符组:

testString <- "Hi hi missing u lollol hahahahalol sillybilly haaaaa!"

我正在尝试使用 gsub 正则表达式替换每个单词中重复的字符组以生成以下输出:

"Hi hi missing u lol halol sillybilly haaaaa!"

我已经尝试了以下行,但它没有产生正确的输出:

gsub("[[:blank:]](.+?){2,}[[blank]]\\1",
replacement="\\1", testString, perl=TRUE)

我做错了什么?

最佳答案

您可以匹配重复的连续字符并跳过它们,然后使用类似的解决方案处理所有其他重复的连续字符

x <- "Hi hi missing u lollol hahahahalol sillybilly haaaaa!"
gsub("(\\w)\\1+(*SKIP)(*F)|(\\w+?)\\2+", "\\2", x, perl=TRUE)

参见 regex demo和一个 online R demo

详细信息:

  • (\\w)\\1+(*SKIP)(*F) - 匹配并捕获一个字符字符(使用 (\\w),这可以调整),然后同一字符出现 1+ 次(使用 \\1+),然后丢弃整个文本,引擎在匹配结束后继续搜索另一个匹配(以 PCRE (*SKIP)(*FAIL) verbs 顺序)
  • | - 或者
  • (\\w+?)\\2+ - 1 个或多个单词字符,尽可能少,被捕获到第 2 组(使用 (\\w+?)),然后匹配出现 1 次以上的相同值(使用 \\2+)。

替换的只是第 2 组的值。

关于使用正则表达式替换重复的字符组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com