2014-09-30 76 views
0

我正在使用BPM軟件來自動化一些進程,而在我的流程中,我需要根據其名稱對一些文件進行分組。返回文件名無正則表達式的正則表達式

我需要創建一個正則表達式,它返回沒有後綴的項目名稱。 更大的問題是文件名中的'Foo_Bar'部分,它在每個項目中都會發生變化。

我試圖用一個超前正則表達式來解決它,但由於任何原因它沒有工作。

使用正則表達式可以解決這類問題嗎?

var arr = [ 
    'Company-2014-09-19_Foo_Bar_Barcoded_Layout-1.pdf', 
    'Company-2014-09-19_Foo_Bar_Barcoded_Layout-2.pdf', 
    'Company-2014-09-19_Foo_Bar_Layout-1.pdf', 
    'Company-2014-09-19_Foo_Bar_Layout-2.pdf', 
    'Company-2014-09-19_Foo_Bar.xml', 
    'Company-2014-09-19_Foo_Bar_Report.pdf' 
]; 

re = /Company-\d{4}-\d{2}-\d{2}\w+(?=_Barcoded|_Layout|_Report|\.)/; 

for(var i=0; i<arr.length; i++) { 
    var match = arr[i].match(re); 
    var str = match ? match[0] : null 
    console.log(str); 
}� 

輸出:

Company-2014-09-19_Foo_Bar_Barcoded 
Company-2014-09-19_Foo_Bar_Barcoded 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar_Report� 

輸出預計:

Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar 
Company-2014-09-19_Foo_Bar� 
+2

用'\ w +?'在中間嘗試。默認情況下,* GREP是貪婪的*,並會盡可能地匹配。 – usr2564301 2014-09-30 22:17:45

+2

我將詳細介紹Jongware的評論:發生什麼事是你的模式消耗了整個字符串,直到'Company-2014-09-19_Foo_Bar_Barcoded_Layout'(因爲'\ w +')。然後備份,直到lookahead斷言不再失敗,位於'Company-2014-09-19_Foo_Bar_Barcoded'。如果將其更改爲'\ w +?',它將逐字符匹配,直到斷言成功,位於'Company-2014-09-19_Foo_Bar'處,爲您提供期望的結果。 – 2014-09-30 22:30:40

+0

謝謝你們! \ w +?解決了我的問題! 非常感謝Jongware的提示,並拉扯出優秀的解釋! – 2014-10-01 12:03:54

回答