用于在文件名中的 2 个连字符之间查找数据的正则表达式

问题描述

我有一组具有不同长度名称文件,格式为:aaaa-1234-filename.zip、aaaa-12345-filename-still-filename.zip、aaaa-123456-filename.zip、aaaa-1234567-文件名-仍然-文件名.zip。

我想去掉这些文件名的第一部分,并删除包括第二个 - 在内的所有内容。我曾尝试通过 PowerShell,但 Rename-Item -NewName 似乎仅对删除名称的标准化部分(例如 aaaa-)有用,而不对名称的可变长度部分有用。

我是否遗漏了 PowerShell 中的某些内容,或者是否有更好、更简单的方法来执行此任务?

解决方法

有几种方法可以做到这一点:

  1. '\d+':匹配所有数字,
  2. '(?<=-).*?(?=-)':使用 - 分隔符分割,
  3. 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'

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...