2016-01-07 497 views
1

我有这样蟒蛇重复的正则表达式

(\w)(..\1..\1|...\1...\1|....\1....\1|.....\1.....1) 

我想让它更短的正则表达式模式。我们可以看到点的数量是从2到5.我想写一些类似(\w)(.{2,5}\1){2}但在这种情况下,它会匹配一些错误的字符串q00q000q。此外,我可以尝试使用数字引用,但它重复字符串而不是符号.。是否可以重复.{2,5}作为具体计数.

更新 这是一个关于井字游戏的挑战。我需要写下来的长度< = 50可以用来找出是否有人赢

+0

换句话说,我需要一个reg EXP对于那样的字符串 QaaaQaaaQaaaQ(字母'a'的计数没有指定) – Leo

+0

我认为你需要逃避'。'。正如'\ .'。 –

+0

@MattCremeens不,否则你会匹配一个字面点。 – HamZa

回答

1

您可以生成一个Python表达式正则表达式的正则表达式:

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)' 
+0

酷,但我们回到了一个:) – HamZa

+1

也许,也许不是。如果OP的问题是“我的正则表达式是16K字符长,我不想手动输入”,那么我的解决方案会有所帮助。如果OP的问题是“我想发现一个很酷的正则表达式”,那么我根本就没有帮他。 –