You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中统计字符串重叠子串出现次数的问题求助

解决R语言中重叠子串的统计问题

你遇到的问题是因为stringr和stringi里的这些字符串匹配函数,默认都是非重叠匹配模式。

拿AAAA匹配AAA来说,第一次匹配到位置1-3的AAA后,函数会把指针移到第4个字符的位置,剩下的单个A没法再匹配AAA,所以返回结果是1,而不是你想要的2。

要统计这种重叠的子串,得用正向零宽预查的正则写法,它不会“消耗”匹配到的字符,指针会留在原地,这样就能让后续的重叠匹配也被统计到。

具体实现代码

  • 用stringr统计次数:
stringr::str_count(string = "AAAA", pattern = "(?=AAA)")

返回结果:[1] 2

  • 用stringi统计次数:
stringi::stri_count(str = "AAAA", regex = "(?=AAA)")

返回结果:[1] 2

  • 提取所有重叠的子串:
stringr::str_extract_all("AAAA", "(?=(AAA))\\1")

返回结果:[[1]] [1] "AAA" "AAA"

内容的提问来源于stack exchange,提问作者fugu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:41:29