我使用下面的正则表达式替换文件名
Regex -> .*\/([A-Z0-9_]{1,9})_(O).*.cmd
Substitution -> $1
文件名如下:
File Name | Substituted Name
---------------------------------- ------------------
/V3/OGM_REC_Offline_Level0_4D.cmd OGM_REC
/V2/PIE_PROD_Online_Level1_6D.cmd PIE_PROD
/V3/BR2_OnDemand.cmd BR2
/opt/STING_Online_Inc0_1W.cmd STING
然后文件发生了变化,我修改了正则表达式
Regex -> .*\/([A-Z0-9_]{1,9})(_O|Full).*.cmd
Substitution -> $1
其他新文件名
File Name | Substituted Name
---------------------- ------------------
/opt/RSU10Full.cmd RSU10
/V4/REZ40_1Full.cmd REZ40_1
现在,似乎有新文件正在使用以下名称格式进行更新
/app/OMGIT_FullOnDemand_4W.cmd
/admin/FOC_STG_Full_6D.cmd
我再次修改了正则表达式,但它没有成功
Regex -> .*\/([A-Z0-9_]{1,9})(_O|Full|_Full).*.cmd
Substitution -> $1
答案 0 :(得分:1)
我建议使用带有 lazy 限制量词{1,9}?
和可选_
的版本:
.*/([A-Z0-9_]{1,9}?)(_O|_?Full).*[.]cmd
这样,我们将尽可能少的字符与[A-Z0-9_]{1,9}?
匹配,以返回有效的捕获子文本,_?Full
部分可以保留可选的下划线。
答案 1 :(得分:0)
我注意到不必要的尾巴总是以:(可选)_,大写字母,小写字母。 因此,通用的解决方案是:
.*\/([^a-z]*?)[_]?[A-Z][a-z].*