2016-01-07 2 views
1

У меня есть шаблон регулярного выражения, как этотпитона повторять регулярное выражение

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

Я хочу, чтобы сделать его короче. Как мы видим, число точек от 2 до 5. Я хочу написать что-то вроде (\w)(.{2,5}\1){2}, но в этом случае оно будет соответствовать некоторым неправильным строкам q00q000q. Также я могу попытаться использовать ссылку на число, но он повторяет символы из строки вместо символов .. Можно ли повторить шаблон .{2,5} как определенный счет .?

ОБНОВЛЕНИЕ Это была ошибка в игре с тик-таком. Мне нужно записать регулярное выражение длины < = 50, который может быть использован, чтобы узнать, если кто-то выигрывает

+0

Другими словами мне нужно рег ехр для строки типа QaaaQaaaQaaaQ (количество букв 'a' не указано) – Leo

+0

Мне кажется, вам нужно сбежать из '.'. Как в '\ .'. –

+0

@MattCremeens Nope, иначе вы будете соответствовать буквальной точке. – 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 заключается в том, что «я хочу открыть новую новую функцию регулярного выражения», то я не помог ему вообще. –

Смежные вопросы