将24小时格式化的时间与正则表达式匹配
发布时间:2020-12-14 05:50:13 所属栏目:百科 来源:网络整理
导读:我试图使用egrep将24小时时间与正则表达式相匹配. 这是我的测试文件test.txt: 32:23:3124:30:3123:70:3123:61:3123:10:7023:10:6122:17:1601:17:1524:15:220:17:1600:17:1724:30:31 这是我的正则表达式: egrep '(2[0-3]|1[0-9]|0[0-9]|[^0-9][0-9]):([0-5]
我试图使用egrep将24小时时间与正则表达式相匹配.
这是我的测试文件test.txt: 32:23:31 24:30:31 23:70:31 23:61:31 23:10:70 23:10:61 22:17:16 01:17:15 24:15:22 0:17:16 00:17:17 24:30:31 这是我的正则表达式: egrep '(2[0-3]|1[0-9]|0[0-9]|[^0-9][0-9]):([0-5][0-9]|[0-9]):([0-5][0-9]|[0-9])' test.txt 结果匹配: 23:10:70 23:10:61 22:17:16 01:17:15 00:17:17 知道它为什么匹配23:10:70和23:10:61? 解决方法
它实际上匹配23:10:7和23:10:6,但由于你没有在字符串末尾使用行尾元字符$,它将处理后面的任何内容.
egrep '^(2[0-3]|1[0-9]|0[0-9]|[^0-9][0-9]):([0-5][0-9]|[0-9]):([0-5][0-9]|[0-9])$' test.txt 换句话说,如果匹配的数字是该行的最后一位,也就是说,如果后跟$,则应该只允许字符串末尾的[0-9]. 另一个选择是,如果小于10,则强制最后一个数字为0-填充,即代替[0-9]使用0 [0-9].这将匹配23:10:07,但不是23:10:7.这与你已经拥有的小时部分相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |