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

Python如何统计子串在主字符串中出现的次数(含重叠匹配)

问题根因

Python 内置的str.count()方法仅统计非重叠子串的出现次数。你的示例中两个CDC子串共享了中间的字符C(第一个匹配区间为下标24,第二个匹配区间为下标46),因此默认方法只能返回1次匹配结果。

解决方案

以下是两种常用的兼容重叠场景的统计实现:

  • 滑动窗口遍历实现
main_string = "ABCDCDC"
find_string = "CDC"
count = 0
sub_len = len(find_string)
# 遍历所有可能的子串起始位置
for i in range(len(main_string) - sub_len + 1):
    if main_string[i:i+sub_len] == find_string:
        count += 1
print(count)

运行输出结果为2,符合预期。

  • 正则零宽断言实现
    利用正则正向先行断言的零宽度特性,匹配时不会消耗已匹配的字符,天然支持重叠场景统计:
import re

main_string = "ABCDCDC"
find_string = "CDC"
# 用re.escape处理子串,避免子串含正则特殊字符时匹配异常
count = len(re.findall(fr'(?={re.escape(find_string)})', main_string))
print(count)

内容的提问来源于stack exchange,提问作者Alfred Joe Jr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:33:02