正则表达式查找文件名中 2 个连字符之间的数据
Regular Expression to find data between 2 hyphens in file names
我有一组名称长度不一的文件,格式如下:aaaa-1234-filename.zip, aaaa-12345-filename-still-filename.zip, aaaa-123456-filename.zip, aaaa-1234567-文件名-仍然-filename.zip.
我想去掉这些文件名的第一部分,并删除包括第二个 - 在内的所有内容。我试图通过 PowerShell,但 Rename-Item -NewName 似乎只对删除名称的标准化部分(例如 aaaa-)有用,而不是名称的可变长度部分。
我是否遗漏了 PowerShell 中的某些内容,或者是否有更好、更简单的方法来执行此任务?
有几种方法可以做到这一点:
'\d+'
:匹配所有数字,
'(?<=-).*?(?=-)'
:使用-
分隔符拆分,
str.split('-')
: 使用 -
分隔符拆分。
示例:
(1)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = re.findall(r'\d+', s)[0]
# nums = '12345'
(2)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = re.findall('(?<=-).*?(?=-)', s)[0]
# nums = '12345'
(3)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = s.split('-')[1]
# nums = '12345'
我有一组名称长度不一的文件,格式如下:aaaa-1234-filename.zip, aaaa-12345-filename-still-filename.zip, aaaa-123456-filename.zip, aaaa-1234567-文件名-仍然-filename.zip.
我想去掉这些文件名的第一部分,并删除包括第二个 - 在内的所有内容。我试图通过 PowerShell,但 Rename-Item -NewName 似乎只对删除名称的标准化部分(例如 aaaa-)有用,而不是名称的可变长度部分。
我是否遗漏了 PowerShell 中的某些内容,或者是否有更好、更简单的方法来执行此任务?
有几种方法可以做到这一点:
'\d+'
:匹配所有数字,'(?<=-).*?(?=-)'
:使用-
分隔符拆分,str.split('-')
: 使用-
分隔符拆分。
示例:
(1)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = re.findall(r'\d+', s)[0]
# nums = '12345'
(2)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = re.findall('(?<=-).*?(?=-)', s)[0]
# nums = '12345'
(3)
import re
s = 'aaaa-12345-filename-still-filename.zip'
nums = s.split('-')[1]
# nums = '12345'