python重复正则表达式

python重复正则表达式,python,regex,Python,Regex,我有一个这样的正则表达式模式 (\w)(..\1..\1|...\1...\1|....\1....\1|.....\1.....1) 我想把它缩短一些。正如我们所看到的,点的数量是从2到5。我想写一些类似于(\w)(.{2,5}\1){2}的东西,但在这种情况下,它将匹配一些错误的字符串q00q000q。我也可以尝试使用数字引用,但它会重复字符串中的字符,而不是符号。是否可以重复模式{2,5}作为的特定计数 更新 这是一场关于井字游戏的挑战。我需要写下长度为的regexp,您可以使用Pyth

我有一个这样的正则表达式模式

(\w)(..\1..\1|...\1...\1|....\1....\1|.....\1.....1)
我想把它缩短一些。正如我们所看到的,点的数量是从2到5。我想写一些类似于
(\w)(.{2,5}\1){2}
的东西,但在这种情况下,它将匹配一些错误的字符串
q00q000q
。我也可以尝试使用数字引用,但它会重复字符串中的字符,而不是符号
。是否可以重复模式
{2,5}
作为
的特定计数

更新
这是一场关于井字游戏的挑战。我需要写下长度为的regexp,您可以使用Python表达式生成regex:

In [13]: r'(\w)(%s)'%'|'.join(r'{dots}\1{dots}\1'.format(dots='.'*i) for i in range(2,6))
Out[13]: '(\\w)(..\\1..\\1|...\\1...\\1|....\\1....\\1|.....\\1.....\\1)'

换句话说,我需要一个reg exp来表示像Qaaqaaqaaq这样的字符串(没有指定字母“a”的计数),我认为您需要转义“.”。就像在
\.
@Leo中一样,我认为这是不可行的。至少不能用简单的正则表达式。你需要“数”这些点并保持状态。我不知道python正则表达式中有什么特性可以做到这一点。如果我可以问一下,为什么要缩短它?知道这一点可能有助于我们提出替代方案。不可能。你想要的是一个非正规语言的经典例子。看见它描述了正则表达式不能记住它计算了多少个字符,很酷,但我们回到了原点:)也许,也许不是。如果OP的问题是“我的正则表达式长度为16K个字符,我不想手动键入”,那么我的解决方案会有所帮助。如果OP的问题是“我想发现regex的一个很酷的新特性”,那么我根本没有帮他。