首页 > 解决方案 > 正则表达式 Python - 如何获取不连续的出现次数?

问题描述

这是我的代码,我想获取基于此模式的组合数量:x - y - x,示例:"UBU" , "ANA", "INI"

    import re 

    pattern = r"(?P<name>[a-z]).(?P=name)"

    print(len(re.findall(pattern, "hello"))) # should return 0 : OK

    print(len(re.findall(pattern, "mirror"))) # should return 1 because there is "ror" : OK 

    print(len(re.findall(pattern, "irir"))) #should return 2 because there are "iri" and "rir" : return just 1

当组合的一部分像“iri”中的“rir”的前两个字母一样重叠到另一个组合中时,它就不起作用了。

您知道如何获得这些组合的正确数量(对于第三个示例)吗?非常感谢您提前

标签: pythonregex

解决方案


def pattern_counter(word):
    return sum([1 for index, letter in enumerate(word[:(len(word)-2)]) if letter == word[index+2]])

word1 = "hello"
word2 = "mirror"
word3 = "irir"

print(pattern_counter(word1)) # prints 0
print(pattern_counter(word2)) # prints 1
print(pattern_counter(word3)) # prints 2

推荐阅读