Это, кажется, делает трюк:
String input = "trjb....fsf..ib.bi.";
Pattern pattern = Pattern.compile("[^\\.]\\.([^\\.]|$)");
Matcher matcher = pattern.matcher(" " + input);
while (matcher.find()) {
System.out.println(matcher.start());
}
Дополнительное пространство перед входом делает две вещи:
- Позволяет обнаружить
.
в качестве первого символа входной строки
- Смещает
matcher.start()
на единицу для учета символа перед совпавшим .
Результат:
15
18