我必须重命名一些文件-想到使用正则表达式自动化这个过程。
当前文件名格式为:
CompanyName-Invoice-04-Date-2021-01-06-**Client-Abra**-**Paid**
CompanyName-Invoice-20-Date-2022-10-10-**Client-Abra-Cadabra**-**Paid**
CompanyName-Invoice-99-Date-2023-12-31-**Client-Boombastic-Fantastic**-**Paid**
我想将文件名格式更改为:
CompanyName-Invoice-04-**Client-Abra**-Date-2021-01-06-**Paid**
CompanyName-Invoice-20-**Client-Abra-Cadabra**-Date-2022-10-10-**Paid**
CompanyName-Invoice-99-**Client-Boombastic-Fantastic**-Date-2023-12-31-**Paid**
我已经设法组在一起,直到日期的一部分使用:
^([A-Za-z0-9-]{17})([-]{1})([A-Za-z0-9-]{15})([-]{1})
我故意把“-”分开,这样如果我想的话,我以后可以操纵它。
当涉及到对格式的“客户名称”和“付费”部分进行分组时,我做得不好。
如果能帮我把最后两部分组合起来我会很感激的。
非常感谢!
3条答案
按热度按时间myss37ts1#
您可以尝试使用lookarounds进行匹配:
然后将匹配替换为位置为
\2-\1
的组(Python风格)。正则表达式说明:
(?<=-\d{2}-)
:正向后看(匹配之前的内容)-\d{2}-
:破折号后跟两位数字和另一个破折号(Date-\d{4}-\d{2}-\d{2})
:第1组,包含您的日期-
:破折号(.*)
:Group 2,包含您的字符串(?=-Paid)
:正向前看(匹配后的内容)-Paid
:破折号后跟“已付”检查regex demo here。
brgchamk2#
试试这个:
这个很吻合
Date-
和日期Client
和任意字母、数字或连字符串xytpbqjk3#
如果可以,请具体说明: