Python2:匹配所有名称的正则表达式模式

Python2: Regex pattern to match all names

下面是一个文件夹中的文件,想要编写一个正则表达式模式来匹配所有文件名 并将其分成 4 组,例如

群组:

  1. 日期格式前的文字
  2. 日期格式
  3. 日期格式后的文本
  4. 扩展名(任何或没有扩展名)

姓名:

XYZ_XY__T_20180808_88
GYG_20180813.csv
JENNY_BH_COSTUMES_T_20180808_88.csv
JKS9KS9_DDD_20180809_2.txt
AMY_BH_MAKEUP_T_20180808_88.dat
UUB-134941099-00002531-003_20180814
usa-Nasa_Y_20180806_01.csv
usa-Tpkyo-HHDY_Y_20180806_01.csv

试过这个 -

(\w+)(-?)_(\d{4}\d{2}\d{2})(\w+)?(\.csv|\.dat|\.txt)?

但似乎不起作用。怎么办?

既然您想捕获 所有 日期子字符串之前的文本,看起来您所要做的就是在初始组中包含破折号和下划线:([\w-_]+)(并删除以下捕获可选独立破折号的组):

您也可以使用 ^$ 来确保匹配跨越整行:

^([\w-_]+)(\d{4}\d{2}\d{2})(\w+)?(\.csv|\.dat|\.txt)?$

https://regex101.com/r/M5kIo6/1