84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
字符串同时有三种格式,如下,需要获取字符串中的时间,即2015-05-01 21:35,16小时,15分钟"文章由xxx 于2015-05-01 21:35分享""文章由xxx 于16小时前分享""文章由xxx 于15分钟前分享"注:xxx为用户名
用什么方式可以比较高效地截取时间信息?
我知道正则君强大,能提供详细思路就更好了。。。
闭关修行中......
如果只有这三种的话: (\d{4}-\d{2}-\d{2} \d{2}:\d{2})|(\d{1,2}小时)|(\d{1,2}分钟)
Java 没怎么碰过,给个思路吧,首先正则直接匹配/于(.+?)分享/g,获取到时间字符串,直接 Date 化看是否成功,如果成功则获取到了没成功则是词义化的时间,自己写一个函数根据当前时间推断词义化时间的具体时间。
/于(.+?)分享/g
正则表达式(逃
补充答案:String str="文章由xxx 于2015-05-01 21:35分享";方法一:(简单粗暴)
int start=str.lastIndexOf("于"); int end=str.lastIndexOf("分享"); String result=str.substring(start+1,end);
方法二:(正则)
String regEx="(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})|(\\d{1,2}小时)|(\\d{1,2}分钟)"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); if(m.find()){ String result=m.group(); }
注:常规法,不能处理掉“前”字;Java的正则表达式单斜杠变为双斜杠,否则会报错Invalid escape sequence
用正则表达式。
如果只有这三种的话: (\d{4}-\d{2}-\d{2} \d{2}:\d{2})|(\d{1,2}小时)|(\d{1,2}分钟)
Java 没怎么碰过,给个思路吧,首先正则直接匹配
/于(.+?)分享/g
,获取到时间字符串,直接 Date 化看是否成功,如果成功则获取到了没成功则是词义化的时间,自己写一个函数根据当前时间推断词义化时间的具体时间。正则表达式(逃
补充答案:
String str="文章由xxx 于2015-05-01 21:35分享";
方法一:(简单粗暴)
方法二:(正则)
注:常规法,不能处理掉“前”字;Java的正则表达式单斜杠变为双斜杠,否则会报错Invalid escape sequence
用正则表达式。