分组

JAVA正则表达式高级用法(分组与捕获)

本小妞迷上赌 提交于 2019-12-10 05:30:44
正则表达式 在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了。这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获。 对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a。这些限定符如下所示: X ? X ,一次或一次也没有 X * X ,零次或多次 X + X ,一次或多次 X { n } X ,恰好 n 次 X { n ,} X ,至少 n 次 X { n , m } X ,至少 n 次,但是不超过 m 次 但是我们如果要对多个字符进行重复怎么办呢?此时我们就要用到分组,我们可以使用小括号"()"来指定要重复的子表达式,然后对这个子表达式进行重复,例如:(abc)? 表示0个或1个abc 这里一 个括号的表达式就表示一个分组 。 分组可以分为两种形式,捕获组和非捕获组。 捕获组 捕获组可以通过从左到右计算其开括号来编号 。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 1 ((A)(B(C))) 2 /A 3 (B(C)) 4 (C) 组零始终代表整个表达式之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列。捕获的子序列稍后可以通过 Back 引用 在表达式中使用,也可以在匹配操作完成后从匹配器检索。

SQL学习精粹之group by分组

若如初见. 提交于 2019-12-04 06:46:33
group by 有一个原则, 不分组必聚合原则: 就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要) 一、group by取最大值 面试遇到一个分组取最大值的问题 例子一 取最新充值记录 充值记录表 CREATE TABLE chongZhi ( id int not null primary key AUTO_INCREMENT COMMENT '主键编号', userId int COMMENT '充值用户id', jine int COMMENT '充值金额', date date COMMENT '充值日期' )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '充值记录表'; insert into chongZhi(userId,jine,date) value(1,20,'2016-10-28'); insert into chongZhi(userId,jine,date) value(1,60,'2016-10-29'); insert into chongZhi(userId,jine,date) value(1,55,'2016-10-30'); insert into chongZhi(userId,jine,date) value(2,100,'2016-10-22')