2016-01-07 3 views
0

Мне нужно регулярное выражение для строки, которое содержит состав номер последовательной буквы A. Под композитным числом понимается не простое число букв. Таким образом, AAAAA недействителен и AAAAAAAAA действителен. Мое единственное решение для этого:Композитное количество вхождений буквы с регулярным выражением

import re 
Regex_Pattern = r'(A{2,})\1+' 
print(str(bool(re.search(Regex_Pattern, raw_input()))).lower()) 

Но это не работает для вхождений 9 букв . Вы можете мне помочь?

ответ

2

Необходимо указать, что вся строка должна быть сопоставлена. Так что добавьте ^ и $:

>>> [i for i in range(20) if re.search(r'^(A{2,})\1+$', 'A' * i)] 
[4, 6, 8, 9, 10, 12, 14, 15, 16, 18] 

Или с помощью re.match, вам нужно только $:

>>> [i for i in range(20) if re.match(r'(A{2,})\1+$', 'A' * i)] 
[4, 6, 8, 9, 10, 12, 14, 15, 16, 18] 
+0

Хорошо, спасибо, может быть, вы мне помочь, как писать вариации этого регулярного выражения, но минимальная длина должна должно быть 6 или больше? –

+0

Замените '2' на' 3'. –

+0

спасибо, я понял –

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