Regex Python如何获得非连续出现的次数?

2024-06-16 08:51:57 发布

您现在位置: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”的前两个字母时,它就不起作用了

你知道如何得到这些组合的正确数目吗(对于第三个例子)? 事先非常感谢


Tags: 代码namerelenreturn模式okpattern
1条回答
网友
1楼 · 发布于 2024-06-16 08:51:57
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

相关问题 更多 >