Как уже упоминалось в комментариях, ваше регулярное выражение хорошо.Или, возможно, может быть сокращено до ([WF]-)*[WF]
или ([WF]-){3}[WF]
.
Я только публикую ответ, чтобы предоставить решение, не основанное на регулярных выражениях *, на тот случай, если вам в конечном итоге понадобится или вам понадобится одно из них:
for (int i = 0; i < word.length(); i++) {
if (i % 2 == 0) {
if (word.charAt(i) != 'F' && word.charAt(i) != 'W') {
return false;
}
} else if (word.charAt(i) != '-') {
return false;
}
}
return true;
Демо
* Очевидно, это основано на том, что длина в порядке, не ноль и т. Д.