Java查找一个字符串中所有匹配某正则的子串

来源:互联网 发布:手机淘宝标题模块 编辑:程序博客网 时间:2024/05/22 12:09

代码如下:

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("\\[\".*?\"\\]"); //加一个问号后就是非贪婪匹配
注意:上述如果没有那个?号就是贪婪正则,这一只会匹配到最外层的,即只会匹配到一个,但是加了问号就变成了非贪婪,就可以实现正确的匹配

0 0
原创粉丝点击