2015-11-20 82 views
1

我用下面的正則表達式來替代文件名修改java的正則表達式的

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 
+1

嘗試'* /(A-Z0-9 _] {1,9}?)(_Ø| _滿了嗎?)* cmd'。[。]。 –

+0

@stribizhev,你不應該發佈這個作爲答案嗎?我已經測試過它,它適用於我有的例子...我將在星期一使用這個廣泛的測試...感謝您的快速回復... – Marcos

+0

好吧,讓我發佈並解釋。 –

回答

1

我建議使用懶惰版限制量詞{1,9}?和可選_

.*/([A-Z0-9_]{1,9}?)(_O|_?Full).*[.]cmd 

通過這種方式,我們儘可能少地匹配[A-Z0-9_]{1,9}?以返回有效的捕獲的潛臺詞,並且_?Full部分可以容納可選的下劃線。

the regex demo

+0

更好! :) – Marcos

+0

如果您在星期一獲得更復雜的圖案,請隨時返回此處。 –

0

我注意到,不必要的尾巴八方通開始:(可選)_,以大寫字母,小寫的字母信。 因此,通用的解決方案是:

.*\/([^a-z]*?)[_]?[A-Z][a-z].*