匹配类似于 A1:0.43,A2:0.42 这样形式字符串的正则表达式
// 如果存在等级划分,则数据的形式如下:A1:0.43,A2:0.42 如果不存在等级划分,则数据的形式就是单一的数字,如:0.66 / 1.0 private static final String SCORE_REG = "^(([A-Z][1-9]):){0,1}([0-9]+([.]{1}[0-9]+){0,1})(,(([A-Z][1-9]):){0,1}([0-9]+([.]{1}[0-9]+){0,1}))*$";
需求如上面的注释,一开始的匹配总有点问题,当只存在一个等级的数据时(如:A1:0.43),当存在多个等级的数据时,则等级之间通过英文逗号划分,换而言之,如果逗号存在的话,那么它的后面必然存在一条数据,因此将逗号和它后面的一条数据作为一个整体进行匹配(即:,A2:0.42 是一个整体),且这个整体出现的次数可以为0次或者多次,因此通过 * 通配符进行匹配,该部分的正则为:
(,(([A-Z][1-9]):){0,1}([0-9]+([.]{1}[0-9]+){0,1}))*
最后整个正则的前面加上 “^”,结尾加上“$”,好像是从匹配对象的开头到结尾这样匹配下来?(详细可以参考这里:https://blog.csdn.net/chenmozhe22/article/details/80602000)
ps:上面的正则还是存在一些问题,如果有想法的,可以在评论区交流探讨。