Найти годы с регулярным выражением - PullRequest
3 голосов
/ 05 марта 2011

Уважаемый, я бы удалил из списка строки, содержащие дату.Пример: "Музыкальные группы 1990-х годов" должны быть удалены.

Могу ли я сделать это в Java?

Ответы [ 4 ]

2 голосов
/ 05 марта 2011

Регулярного выражения \d{4}, вероятно, будет достаточно - оно будет соответствовать всем строкам, содержащим 4 последующие цифры. Возможно, у вас могут быть более конкретные случаи, например 19\d{2}|20\d{2}

1 голос
/ 05 марта 2011

Если вы используете формат даты YYYY, регулярное выражение ^\d{4} должно работать для любой даты в начале строки.

String str = "1990s music groups";
boolean shouldDelete = str.matches("^\d{4}");
if (shouldDelete) {
    // Delete string
}

Если вы хотите сопоставить дату в любой части строки, просто удалите начальную ^.

0 голосов
/ 22 сентября 2015

Для более конкретного года (1970-2029) я использовал:

Pattern pattern;
Matcher matcher;
String errorTag = null;
private static final String PATTERN_YEAR = "^(197\\d{1}|198\\d{1}|199\\d{1}|200\\d{1}|201\\d{1}|202\\d{1})";

...

if (filter.getName().contains("YYYY")){
    pattern = Pattern.compile(PATTERN_YEAR);
    matcher = pattern.matcher(filter.getValue());
      if(!matcher.matches()){   
          errorTag= " *** The year is invalid, review the rate";


    }
}
0 голосов
/ 05 марта 2011
//ArrayList<String> list = ....
String year = "1990";
ArrayList<String> toRemove = new ArrayList<String>();
for (String str:list) {
   if (str.matches(".*"+year+".*")) {
      toRemove.add(str);
   }
}
for (String str:toRemove) list.remove(str);
toRemove = null;

Использование списка toRemove для предотвращения java.util.ConcurrentModificationException

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