【问题标题】:Python2: Regex pattern to match all namesPython2:匹配所有名称的正则表达式模式
【发布时间】:2023-04-05 04:02:02
【问题描述】:

以下是文件夹中的文件,并希望编写一个正则表达式模式来匹配所有文件名 并将其分成 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)?

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

【问题讨论】:

  • 破折号和下划线之前/之后的文本到底想要什么?您是要在一组中捕获日期模式之前的所有文本,还是只捕获单词字符,还是什么?

标签: python regex python-2.x


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多