亲爱的,我想从一个列表中删除包含日期的字符串。
例如:"1990s 音乐组合" 必须被删除。
我能用 Java 做到吗?
\d{4}
可能已经足够 - 它将匹配所有包含连续4个数字的字符串。你也可以使用一些更具体的情况,如19\d{2}|20\d{2}
。YYYY
日期格式,正则表达式^\d{4}
应该适用于字符串开头的任何日期。String str = "1990s music groups";
boolean shouldDelete = str.matches("^\d{4}");
if (shouldDelete) {
// Delete string
}
^
即可。//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;
为了得到更具体的年份比率(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";
}
}
^(19|20)\d{2}$