надеюсь, что это коротко и на вопрос .. В приведенной ниже программе я успешно извлек ВСЕ данные из документа-ноты под названием «pad.txt», который состоит из 3 наборов, выровненных по вертикали с «ID», за которым следует «Имя», а затем «Дата регистрации», этот шаблон согласован.Извлечение всех DATES из .txt-файла
блокнота документ состоит только из этого: сделал: 1 Имя: Bob Дата регистрации: 01/12/2014 ID: 2 Имя: Jim Дата регистрации: 8/21/1993 ID: 3 Имя: Steve Дата регистрации: 6/07/2016
Я также определил регулярное выражение, которое принимает приемлемый формат даты: 1-2 цифр, слэш, 1-2 цифры еще раз, слэш, затем 2 для четыре цифры для даты YEAR. В начале этого я указал символ wild card "." < - точка с жадным квантором «» звездами, чтобы сказать, любое количество любых символов до даты принимается, а также после даты я также уточнил
Мою главной цели с «.» этот код, чтобы выделить только все ДАТ в файле pad.txt, и сохранять их в виде строки или что-то ..
общественный класс Main {
public static void main(String args[]) throws Exception{
StringBuilder builder = new StringBuilder();
FileReader reader = new FileReader(new File("pad.txt"));
// Define valid date format via regex
String dateRegex = ".* (\\d{1,2})/(\\d{1,2})/(\\d{2,4}) .* ";
int fileContent = 0;
// iterate through entire notepad doc, until = 0 AKA (finished searching doc)
while((fileContent = reader.read()) !=-1){
builder.append((char)fileContent);
}//encapsulating loop
reader.close();
String extracted = builder.toString();
System.out.println("Extracted: " + extracted);
System.out.println();
Matcher m = null;
// Validate that file contents conform with 'dateRegex'
m = Pattern.compile(dateRegex).matcher(extracted);
if(m.find()){
System.out.println("Entire group : " + m.group());
}
}
}
к сожалению, m.group() ; Outprint only возвращается: «Целая группа: 6/07/2016» Как сказано, моя цель - извлечь ВСЕ даты, но я не могу играть со всеми датами, если вызов .matcher ТОЛЬКО ловит «Целый group: 6/07/2016 « На мой взгляд, я говорю, что ЛЮБОЙ характер ЛЮБОЙ суммы разрешен до и после даты, поэтому он прокручивается до самого низа и находит ТОЛЬКО последнюю дату, как я определяю регулярное выражение так, чтобы он вытаскивает ВСЕ даты, а не только самую ПОСЛЕДНЮЮ, и почему она только тянет последнюю?
Я пытался упорно с этим и не могу понять, как ..
Заранее спасибо
AH! Это было так просто, я знал, что моя реализация .group была немного неправильной, спасибо! С этим я сделал еще большие успехи в понимании регулярных выражений :) – Keith