查找由字符串组成的重复子字符串(如果存在)

2024-04-27 03:09:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用所有字符的同时,如何将一个普通字符串拆分成尽可能多的相同片段。例如

a = "abab"

将返回"ab",而

^{pr2}$

它将返回"ababc",因为不能使用所有字母将其拆分为相同的部分。在


Tags: 字符串ab字母字符pr2ababababc
2条回答

重复子串似乎没有前后字母,所以也可以这样:

In[4]: re.sub(r'^([a-z]+)\1$',r'\1','abab')
Out[4]: 'ab'
In[5]: re.sub(r'^([a-z]+)\1$',r'\1','ababc')
Out[5]: 'ababc' 

([a-z]+)表示子串,1表示重复。在

编辑:

^{pr2}$

这与How can I tell if a string repeats itself in Python?非常相似,但不完全相同,不同之处在于,该问题只要求确定字符串是否由相同的重复子字符串组成,而不是确定重复子字符串(如果有)是什么。在

对于该问题,接受的(以及目前正在执行的bestanswer可以调整为返回重复字符串(如果存在):

def repeater(s):
    i = (s+s)[1:-1].find(s)
    if i == -1:
        return s
    else:
        return s[:i+1]

示例:

^{pr2}$

相关问题 更多 >