2015-11-14 2 views
1

Можно ли обнаружить, что строка имеет 4 одинаковой буквы, разделенных другими символами, такими как: abb*bbc (bb*bb) или a*aaa? Я стараюсь (\S+\s*)\1, и он отлично работает для abb*bbc, но также находит bb и abbcd.Найти дубликаты между некоторыми символами

+2

ли там должно быть ровно один '*', или же может быть несколько (например, . 'a * a * aa')? – Doorknob

+0

Может быть только один '*' –

+0

Выполняется ли это * * с использованием чистого регулярного выражения? Если нет, какой язык программирования вы используете? – Doorknob

ответ

1

The (немного некрасиво) регулярное выражение только решение будет:

([a-z])(?:\*\1\1|\1\*\1|\1\1\*)\1 

То есть:

([a-z]) any letter 
(?:  one of the following: 
    \*\1\1| - a *, and then the letter twice 
    \1\*\1| - letter, *, letter 
    \1\1\* - letter, letter, * 
) 
\1   the fourth letter 
+0

Хорошо работает, большое вам спасибо! –

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