Find the repeating substring a string is composed of, if it exists

后端 未结 2 790
一个人的身影
一个人的身影 2021-01-25 06:53

How would you go about splitting a normal string in to as many identical pieces as possible whilst using all characters. For example

a = \"abab\"
2条回答
  •  南笙
    南笙 (楼主)
    2021-01-25 07:19

    It seems that repeating substring has no pre and after letters, so it also could be this way:

    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]+) means substring, \1 means repeat.

    EDIT :

    re.sub(r'^([a-z]+)\1{1,}$',r'\1','abcabcabcabc')
    'abc'
    

提交回复
热议问题