Не зная о синтаксисе конечных повторений, ваш собственный навык решения проблем должен привести вас к этому:
([a-z])\1\1\1
Очевидно, что это не красиво, но:
- Работает
- Он использует ваш собственный навык решения проблем
- Это может привести вас к более глубокому пониманию концепций
- В этом случае, зная desugared форму синтаксиса конечного повторения
Эй, ребята, классные ответы, но у меня есть одна проблема
"ffffffff".matches("([a-z])\\1{3,}") = true
"fffffasdf".matches("([a-z])\\1{3,}") = false
"asdffffffasdf".matches("([a-z])\\1{3,}") = false
Что я могу сделать для двух последних?
Проблема в том, что в Java matches
должно соответствовать всей строке; это как если бы узор был окружен ^
и $
.
К сожалению, String.containsPattern(String regex)
, к сожалению, нет, но вы всегда можете использовать этот трюк, заключающийся в окружении шаблона .*
:
"asdfffffffffasf".matches(".*([a-z])\\1{3,}.*") // true!
// ^^ ^^