找到正则表达的年份

时间:2011-03-05 18:05:22

标签: java regex

亲爱的,我会从列表中删除包含日期的字符串。 例如:必须删除“1990年代音乐团体”。

我可以在java中执行此操作吗?

4 个答案:

答案 0 :(得分:2)

正则表达式\d{4}可能就足够了 - 它将匹配包含4个后续数字的所有字符串。您可能还有一些更具体的案例,例如19\d{2}|20\d{2}

答案 1 :(得分:1)

如果您使用YYYY日期格式,则正则表达式^\d{4}应适用于字符串开头的任何日期。

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

如果您想在字符串的任何部分匹配日期,只需删除前导^

答案 2 :(得分:0)

//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

答案 3 :(得分:0)

对于更具体的年率(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";


    }
}