Я ищу способ постепенного применения шаблона регулярного выражения, т.е. я ищу средство сопоставления, которое я могу обновлять с помощью символов по мере их поступления и которое сообщает мне по каждому символу, совпадает ли он по-прежнему или нет.
Вот иллюстрация в коде (MagicMatcherIAmLookingFor
- это то, что я ищу, characterSource
- это то, что я могу запросить для нового символа, например, InputStreamReader
):
final Pattern pattern = Pattern.compile("[0-9]+");
final MagicMatcherIAmLookingFor incrementalMatcher = pattern.magic();
final StringBuilder stringBuilder = new StringBuilder();
char character;
while (characterSource.isNotEOF()) {
character = characterSource.getNextCharacter();
incrementalMatcher.add(character);
if (incrementalMatcher.matches()) {
stringBuilder.append(character);
} else {
return result(
stringBuilder.toString(),
remaining(character, characterSource)
);
}
}
Я не нашел способа использовать существующий java.util.regex.Pattern
таким образом, но, возможно, я просто не нашел его.Или есть альтернативная библиотека встроенным регулярным выражениям, которая предоставляет такую функцию?
Мне не повезло, что я искал в Интернете - все результаты полностью завалены тем, как использовать регулярные выражения Java впервое место.
Я нацеливаюсь на Java 8 +