使用正则表达式查找年份

5

亲爱的,我想从一个列表中删除包含日期的字符串。

例如:"1990s 音乐组合" 必须被删除。

我能用 Java 做到吗?

5个回答

5
正则表达式\d{4}可能已经足够 - 它将匹配所有包含连续4个数字的字符串。你也可以使用一些更具体的情况,如19\d{2}|20\d{2}

2
如果您使用的是YYYY日期格式,正则表达式^\d{4}应该适用于字符串开头的任何日期。
String str = "1990s music groups";
boolean shouldDelete = str.matches("^\d{4}");
if (shouldDelete) {
    // Delete string
}

如果你想匹配字符串中的任意日期,只需删除前导的^即可。

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。

如果你需要任何日期,请使用像Bozho建议的\d{4}而不是年份变量。 - RedSoxFan

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";


    }
}

0
每次我搜索用于验证年份的正则表达式时,都会降落在这里,我尝试了所有答案,但最终都无法正确工作,最后以下正则表达式适用于我。
^(19|20)\d{2}$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接