匹配日期,不包括月份中的 0

Matching date, excluding 0 from month

我们有如下命名的文件:
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 如果有的话。还要确保在组 month 之后,还有 2 个数字前面有一个破折号。
  • 0?(?P<day>\d+)匹配日期,有的话忽略0

勾选 test cases