Я пытаюсь проанализировать текстовый документ, содержащий названия регионов и список координат, которые составляют регион.Текст не структурирован так, чтобы его можно было легко разобрать, так как он написан в свободной форме, например:
GUZ06 - река CabooltureРайон, ограниченный линией, начинающейся на пересечении границы морского парка на материке и параллели с широтой 27 ° 08,981 'юга (в точке 27 ° 08,981' юга или около нее, 153 ° 01,822 'восточной долготы) и затем постепенно идущей- (a) как правило, в северо-западном и юго-восточном направлениях (через реку Кабултюр) вдоль границы морского парка на материке до его пересечения с меридианом долготы 153 ° 02,197 'восточной долготы (в точке 27 ° 08,762 или около нее)юг 153 ° 02,197 'восток);а также...GUZ07 - [...]
То, что я хотел бы сделать, это сопоставить название региона, а затем найти, где находится следующий регион, и извлечь блок текста.между двумя точками совпадения, и запустите мою логику извлечения координат для этого блока текста, используя что-то вроде:
while (matcher.find()) {
int textStart = matcher.end() + 1; //remember the end of the current title
matcher.find(); //find the start of the next title
String regionData = myBigString.substring(textStart, matcher.start()); //extract the text for this region
//[process the region data]
matcher.forgetLastFind(); //need to go back so that the next iteration starts from the correct place
}
Конечно, forgetLastFind()
не является реальной вещью.Есть ли способ аппроксимировать это поведение с помощью Matcher
API?В идеале я хотел бы что-то вроде Stack.peek()
, которое возвращает следующий элемент без фактического изменения внутреннего состояния структуры данных.