Если пример верный, то следующее регулярное выражение извлечет только дату, используя find()
, и убедитесь, что установлено DOTALL
.
"XXXX.*?[\\s]+([\\d]{1,2}-[\\d]{1,2}-[\\d]{4})"
По сути, поиск XXX сопровождается пробелами / символом новой строкитогда найди дату.Он будет помещен в группу и затем может быть извлечен.
Вы можете увидеть операцию в этом месте , но обязательно выберите "DOTALL".
public String getDate(String input)
{
String date = "";
Pattern dte = Pattern.compile("XXXX.*?[\\s]+([\\d]{1,2}-[\\d]{1,2}-[\\d]{4})", Pattern.DOTALL);
Matcher m = dte.matcher(input);
if (m.find() && m.groupCount() > 0) {
date = m.group(1);
}
return date;
}
Контрольный пример
@Test
public void testData() throws Exception
{
RegEx_52879334 re = new RegEx_52879334();
String input = re.getInputData();
String date = re.getDate(input);
assertEquals("10-10-2018", date);
System.out.println("Found: " + date);
}
Выход:
Найдено: 10-10-2018