regex 当文件名的一部分包含分隔符时,使用命名的捕获组解析文件名(以下划线分隔

pxy2qtax  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(119)

我想提一下,这是我第一次尝试与命名组合作。
我必须解析这些名称文件,并且为了方便起见,捕获这些组以便以后提取值。
22203_17053180_2020-05-13_TRAN.LET_002.pdf
22203_17053180_2020-05-13_AP_DK_M_002.pdf
22203_17053180_2020-05-13_AP_DK_M.pdf
我有一个想法,这是我的第一次尝试。
第一个月
x1c 0d1x的数据
但是现在我需要捕获下一个组,我们可以称之为<doctype>组,它可以是
TRAN.LETAP_DK_M
并且具有_002的部分可以存在或不存在。
如果_002存在,那么它是必需的。否则整个正则表达式应该仍然是好的。

后期编辑:

这个<doctype>组是在日期的下划线和002的下划线之间定义的,如果存在的话,顺便说一下,这是一个随机的东西,我想它就像一个\d{3}。

b91juud3

b91juud31#

您可以使用

  1. ^(?P<appcorresp>\d{5})_(?P<appnumber>\d{8})_(?P<date>\d{4}-\d{2}-\d{2})_(?P<doctype>.*?)(?:_\d+)?\.\w+$

字符串
参见regex demo

  • 详情 *:
  • ^-字符串的开头
  • (?P<appcorresp>\d{5})-组“appcorresp”:五位数
  • _-下划线
  • (?P<appnumber>\d{8})-组“appnumber”:8位数字
  • _-下划线
  • (?P<date>\d{4}-\d{2}-\d{2})-组“日期”:四位数,-,两位数,-和两位数
  • _-下划线
  • (?P<doctype>.*?)- Group“doctype”:除换行符字符以外的任何零个或多个字符尽可能少
  • (?:_\d+)?-_和一个或多个数字的可选序列
  • \.-点
  • \w+-一个或多个单词字符
  • $-字符串结束。
展开查看全部

相关问题