2012-01-26 3 views
2

Я хочу найти повторения индивидуального символа, где символ повторяется 3 или более раз. "444", "sss" и "------", а "dd" не следует идентифицировать.Идентификация повторения символов с использованием регулярных выражений

я наткнулся на предыдущий StackOverflow вопрос, который дал решение, как:

regexp = re.compile(r"(.)\1") 

Однако это идентифицирует 2 или более повторений одного и того же характера. Я пробовал (r"(.)\{3,}"), который не работает, и (r"(.)\3"), который дает ошибку. Может кто-нибудь, пожалуйста, дайте мне правильное регулярное выражение для этого?

ответ

5

Вы хотите (r"(.)\1\1") (или даже (r"(.)\1\1+")).

Регулярное выражение «соответствует любому символу (.), затем снова совпадает с тем же символом (\1), а затем в третий раз соответствует тому же символу (для первого варианта, который у меня есть), или соответствует тому же символу или более дополнительных времен (для второго варианта выше).

+0

Я пробовал ваше регулярное выражение с помощью st = "111" следующим образом: 're.findall (r" (.) \ 1 \ 1 ", st)', но мой output был '['1']' вместо '['111']'. Почему так? – RanRag

+1

@RanRag: Это потому, что круглые скобки расположены только вокруг первого символа. Используйте '(r" (. {3,}) «), если вам нужно захватить все это. – Borealid

+0

Да, понял это. спасибо – RanRag

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