(bla, 3) "rablabla" # => (bla-6ren">
gpt4 book ai didi

python - 检测字符串中的重复

转载 作者:IT老高 更新时间:2023-10-28 20:20:55 24 4
gpt4 key购买 nike

我有一个简单的问题,但无法提供简单的解决方案:)

假设我有一个字符串。我想检测其中是否有重复。

我想要:

"blablabla" # => (bla, 3)

"rablabla" # => (bla, 2)

问题是我不知道我在搜索什么模式(我没有“bla”作为输入)。

有什么想法吗?

编辑:
看到评论,我想我应该更准确一点:

  • 在字符串中,要么存在重复的模式,要么不存在重复的模式。
  • 重复的模式可以是任意长度。

如果有一个模式,它会一遍又一遍地重复,直到结束。但是字符串可以在模式的中间结束。

例子:

"testblblblblb" # => ("bl",4) 

最佳答案

import re
def repetitions(s):
r = re.compile(r"(.+?)\1+")
for match in r.finditer(s):
yield (match.group(1), len(match.group(0))/len(match.group(1)))

使用最短的重复单元查找所有不重叠的重复匹配:

>>> list(repetitions("blablabla"))
[('bla', 3)]
>>> list(repetitions("rablabla"))
[('abl', 2)]
>>> list(repetitions("aaaaa"))
[('a', 5)]
>>> list(repetitions("aaaaablablabla"))
[('a', 5), ('bla', 3)]

关于python - 检测字符串中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079797/

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