Regex-从文件列表中的文件名中提取日期
我在本地目录中有多个文件,名称如下:Regex-从文件列表中的文件名中提取日期,regex,date,filenames,Regex,Date,Filenames,我在本地目录中有多个文件,名称如下: asd-3A-yyyyMMdd 其中yyyyMMdd表示一个日期。 还有一些文件名为: bcd-3A-yyyyMMdd 还有一堆不同名字的文件,我不需要。 如何仅从以asd开头的文件中提取日期? 我试过的似乎都不管用。解决方案 这个正则表达式 asd-[0-9][a-z]-([0-9]{4})([0-9]{2})([0-9]{2}) 将执行以下操作 要求字符串 以字符asd- 后跟一个数字、一个字母和一个- 后跟类似日期的数字 创建以下捕获组
asd-3A-yyyyMMdd
其中yyyyMMdd表示一个日期。
还有一些文件名为:
bcd-3A-yyyyMMdd
还有一堆不同名字的文件,我不需要。
如何仅从以asd开头的文件中提取日期?
我试过的似乎都不管用。解决方案
这个正则表达式
asd-[0-9][a-z]-([0-9]{4})([0-9]{2})([0-9]{2})
将执行以下操作
- 要求字符串
- 以字符
asd-
- 后跟一个数字、一个字母和一个
-
- 后跟类似日期的数字
- 以字符
- 创建以下捕获组
- 将整个匹配字符串设置为0
- 1年
- 本月2日
- 3日
bsd-3A-20170523
asd-3A-20170523
NotTheDroidsYourLookingFor-20171131
asd-1D-20170523
返回以下匹配项
Match 1
Full match 16-31 `asd-3A-20170523`
Group 1. 23-27 `2017`
Group 2. 27-29 `05`
Group 3. 29-31 `23`
Match 2
Full match 68-83 `asd-1D-20170523`
Group 1. 75-79 `2017`
Group 2. 79-81 `05`
Group 3. 81-83 `23`
解释
你能告诉我们你试过什么吗?我们可以从那里开始。
NODE EXPLANATION
--------------------------------------------------------------------------------
asd- 'asd-'
--------------------------------------------------------------------------------
[0-9] any character of: '0' to '9'
--------------------------------------------------------------------------------
[a-z] any character of: 'a' to 'z'
--------------------------------------------------------------------------------
- '-'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
[0-9]{4} any character of: '0' to '9' (4 times)
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
( group and capture to \2:
--------------------------------------------------------------------------------
[0-9]{2} any character of: '0' to '9' (2 times)
--------------------------------------------------------------------------------
) end of \2
--------------------------------------------------------------------------------
( group and capture to \3:
--------------------------------------------------------------------------------
[0-9]{2} any character of: '0' to '9' (2 times)
--------------------------------------------------------------------------------
) end of \3