regex - 匹配日期,不包括月份中的 0
问题描述
我们有如下命名的文件:
d31_20210315-19232.sql.tar.gz
d31_20201215-19232.sql.tar.gz
匹配年份很容易:
(?<=_)(?P<year>\d{4})
匹配没有 0 的月份让我陷入困境:
(0(?P<month>[1-9]))|((?P<month>[1][1-9]))
这是不允许的,但描述了我想要做什么。
与我想忽略 0 并匹配组内的 1-9 或 12-31 的那一天相同:
(?P<day>
我正处于尝试围绕正则表达式捕获进行编码以获得所需结果的阶段,但它一直困扰着我,我无法得到这个。
解决方案
你可以试试这个:
(?<=_)(?P<year>\d{4})0?(?P<month>\d+)(?=\d\d-)0?(?P<day>\d+)
(?<=_)(?P<year>\d{4})
与年份相匹配。0?(?P<month>\d+)(?=\d\d-)
匹配月份,忽略0
如果有的话。还要确保在 group 之后month
,仍然有 2 位数字,前面有一个破折号。0?(?P<day>\d+)
匹配当天,忽略0
如果有的话。
检查测试用例
推荐阅读
- javascript - React - 列表中的第二层对象未定义
- blazor - 解析 Blazor Uri 路径
- python - caffe 到 onnx 的 libcaffeconverter 导入错误
- excel - 下次调用时如何使用函数中计算的最小值和最大值?
- java - 如何在 openapi 规范 3 中使用 java 自定义注解
- django - 如何修复阻止具有来源“https://s3.amazonaws.com”的框架访问跨域框架
- laravel - 我需要帮助在 Laravel 中制作三向数据透视表并显示输出
- selenium - 验证 selenium ide 中的颜色
- javascript - 如何解决 JavaScript 引用错误(命令未定义)?
- php - 使用带有 ImageMagick 的 HALD CLUT 时出错(输出图像上有黑线)