用于检测周期性字符串的正则表达式

ele*_*ora 5 regex

p字符串的句点w是任何正整数p,以便w[i]=w[i+p] 每当定义该等式的两侧时.让我们来per(w)表示最小周期的大小w.我们说字符串w是周期性的iff per(w) <= |w|/2.

因此,非正式地,周期性字符串只是一个由重复至少两次的前缀组成的字符串.唯一的复杂因素是在字符串的末尾我们不需要前缀的完整副本.

例如,考虑字符串x = abcab.per(abcab) = 3as x[1] = x[1+3] = a,x[2]=x[2+3] = b并没有更小的时期.abcab因此,字符串不是周期性的.但是,字符串ababa是周期性的per(ababa) = 2.

随着越来越多的例子abcabca,ababababa并且abcabcabc也是周期性的.

是否有正则表达式来确定字符串是否是周期性的?

我真的不介意哪种正则表达式,但如果它有所作为,Python re支持的任何东西.

hor*_*rux 5

你需要的是反向引用

\b(\w*)(\w+\1)\2+\b
Run Code Online (Sandbox Code Playgroud)

这匹配甚至abcabcaababababa.

请注意,机制的反向引用(在这种情况下是必要的)做出属于表达正规文法.