Извлечение случайно отформатированного года из строки - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь определить год в строке.Я посмотрел много других ранее заданных вопросов, но не могу найти тот, который касается случайных форматов.Допустим, я ищу деталь для Ford Explorer 2001 года и хочу отфильтровать результаты, чтобы удалить детали, не предназначенные для этого года.Я могу столкнуться с форматами ниже года.Я думал, что String.contains ("01") будет в порядке, но тогда это также соответствует 2010 году, и не учитывает, когда год, который я ищу, вообще отсутствует в строке, но падает между другими годами.Возможно ли, что одно регулярное выражение может охватить все эти сценарии?

  • Подходит для Ford Explorer 2001 года.
  • Подходит для Ford Explorer 1997-2002 годов.
  • Подходит для 01 Ford Explorer.
  • 01 Ford Explorer.
  • Подходит для 97-02 Ford Explorer.
  • Подходит от 97 до (или через) 02 Ford Explorer.

Попытка

public Boolean filterResult(String str, String expectedYear){
if(str.contains("expectedYear") && (str.indexOf(expectedYear)-1 !=2 || 
str.indexOf(expectedYear) == 0){
    return true;
}else{
    return false;
}
}

В случае 2010 возвращает false.Возвращает true, если предыдущая цифра была пробелом или тире, а также, если ожидаемый год находится в начале строки.Не касается ожидаемого года между двумя другими годами.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Это может быть сделано в Java следующим образом

Pattern patt = Pattern.compile("(?:Fits )?(97|1997)?(?:[^0-9]+)?(01|02|200[12]) Ford Explorer.");
// add code to iterate lines
String s = "Fits 1997-2002 Ford Explorer.";
Matcher m = patt.matcher(s);
if(m.matches()){
    if(m.group(1) != null){
        //validate year 1997
    }
    if(m.group(2) != null){
        //validate year 2002
    }
}
0 голосов
/ 20 июня 2019

Вы можете использовать это регулярное выражение:

(\d{4}|\d{2}-\d{2}|\d{2})

Однако, это просто обнаружит, соответствует ли шаблон.Вам нужно будет добавить дополнительную логику, чтобы убедиться, что она действительна.

Проверьте это по адресу: https://rubular.com

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...