代碼如下:
String line = "2016年10月11日我們去哪里玩近期我們近日,次年,同年等等,10月,2019年,3月4日"
Pattern datePattern = Pattern.compile("\\d{4}年\\d{1,2}月\\d{1,2}日|\\d{4}年\\d{1,2}月|\\d{1,2}月\\d{1,2}日|\\d{4}年|\\d{1,2}月|同年|次年|近日|近期");
Matcher dateMatcher = datePattern.matcher(line);
int dateCount = 0;
while(dateMatcher.find()) {
System.out.println(dateMatcher.group());
++dateCount;
}如上代碼是查找,字符串中所有匹配:年月日、年、年月、月、月日、同年、次年、近日、近期的子串
這里涉及到貪婪匹配或者非貪婪匹配,好像跟正則的順序有關,如上,我將長匹配的放在了前面,即先是 年月日,年月,月日,年,月等。我是按照這樣的順序放置正則,所以可以實現貪婪匹配。
此外:
假如有如下字符串
String line = "[[444444444444],[5555555555555]]";
我要將每個[ ]中字符串單獨取出來,可以采用如下正則
Pattern categoryPattern = Pattern.compile("\\[\".*?\"\\]"); //加一個問號后就是非貪婪匹配注意:上述如果沒有那個?號就是貪婪正則,這一只會匹配到最外層的,即只會匹配到一個,但是加了問號就變成了非貪婪,就可以實現正確的匹配