java 时间正则怎样写?

hw20101101 2013-01-05 10:51:03
如:19:20、23:59
...全文
280 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen5287603 2013-02-03
  • 打赏
  • 举报
回复
在你提的这个问题里有没有()都可以匹配。 但是一旦加上(),正则就变成捕获组了。 例如我写了一个正则“([01]\\d|[2][0123]):([0-5]\\d)”其实和“[01]\\d|[2][0123]:[0-5]\\d”都可以匹配到13:37. 但是对于前面的正则,我们可以通过group来获得匹配到的时间。如下: String source = "13:27"; String reg="([01]\\d|[2][0123]):([0-5]\\d)"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(source); while(matcher.find()){ System.out.println(matcher.group(1)); System.out.println(matcher.group(2)); } 运行就会打印出13和27; 想一想,如果你想从一个网页里面抓数据,你不可能只是匹配吧,你肯定也想把匹配到的数据给提取出来吧。这就是捕获组的意思。 当然加上()也会增加正则表达式的可读性。 但是需要注意的是,将正则变为捕获组会减低正则的效率。因此如果你既想使用分组又不想影响效率,可以使用"(?:[01]\\d|[2][0123]):(?:[0-5]\\d)"来告诉正则引擎,你只想分组而不想捕获 所以说,如果你只是想匹配而不捕获,有没有加()是没有差别的。 不知道这样讲你能明白不?
安特矮油 2013-01-08
  • 打赏
  • 举报
回复
OH 不好意思当时手写的,没测试。(2[0-3]|(0|1)\\d):[0-5]\\d这样应该OK了
ceclinux 2013-01-08
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
([01]\\d)|([2][0123]):[0-5]\\d
括号加错了,但是我不知道是什么原因,高手求解释,谢谢了
引用 3 楼 abstruct 的回复:
(0[0-3]|1\\d):[0-5]\\d
有些时间不能匹配
引用 4 楼 is_zhoufeng 的回复:
(([01][0-9])|(2[0-3])):[0-5][0-9]
正解。。[0-9]可以换成\\d 对正则的括号不太懂,我试了下
public class RegexTest {
//http://bbs.csdn.net/topics/390337220
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(("23:27").matches("([01]\\d)|([2][0123]):[0-5]\\d"));
		System.out.println(("13:27").matches("([01]\\d)|([2][0123]):[0-5]\\d"));
		System.out.println(("23:27").matches("([01]\\d|[2][0123]):[0-5]\\d"));
		System.out.println(("13:27").matches("([01]\\d|[2][0123]):[0-5]\\d"));
		System.out.println(("23:27").matches("(([01]\\d)|([2][0123])):[0-5]\\d"));
		System.out.println(("13:27").matches("(([01]\\d)|([2][0123])):[0-5]\\d"));
		//以上不懂啊
		System.out.println(("04:27").matches("(0[0-3]|1\\d):[0-5]\\d"));
		System.out.println(("23:27").matches("(0[0-3]|1\\d):[0-5]\\d"));//3楼的
	}

}
/*
true
false
true
true
true
true
false
false
*/
_jerrytiger 2013-01-05
  • 打赏
  • 举报
回复
(([01][0-9])|(2[0-3])):[0-5][0-9]
安特矮油 2013-01-05
  • 打赏
  • 举报
回复
(0[0-3]|1\\d):[0-5]\\d
安特矮油 2013-01-05
  • 打赏
  • 举报
回复
\\d{2}:\\d{2}
suciver 2013-01-05
  • 打赏
  • 举报
回复
([01]\\d)|([2][0123]):[0-5]\\d
sust2012 2013-01-05
  • 打赏
  • 举报
回复
4楼正解。。。。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧