2012-11-01 88 views
0

我有這個網址:正則表達式 - 獲取文件名?

C:\Projects\Ensure_Solution\GD_EServices_Web\App_WebReferences\GD_Eservices_Web_Service\GD_Eservices_Web_Service.wsdl 
C:\Projects\Ensure_Solution\GD_EServices_Web\App_WebReferences\GD_Eservices_Web_Service\GD_Eservices_Web_Service.wsdl 

我想要得到的WSDL文件名

我有2個解決方案成功(沒有斜線):

\\[^\\]+$ 

\\(.(?!\\))+$ 

但這返回主導斜線:http://regexr.com?32lvi

enter image description here

我怎麼能增強我正則表達式返回文件?

+0

'請包括一個標記,用於指定編程語言或工具使用的是一起:

var path = 'C:\\Projects\\Ensure_Solution\\GD_EServices_Web\\App_WebReferences\\GD_Eservices_Web_Service\\GD_Eservices_Web_Service.wsdl'; console.log(path.match(/[^\\]+$/)); 

而且你能得到它,沒有正則表達式,使用split,並獲得與pop的最後一個元素標籤,'說'正則表達式'標籤描述。 –

+0

@LevLevitsky你肯定是正確的!編輯。 –

回答

1

你只需要排除的正則表達式中的斜線。與此

console.log(path.split('\\').pop()); 
0

試試這個

\\[^\\]+$ 

注:這意味着嘗試只一個領先反斜槓

1

這應該工作[^\\]+$ 但對於你的情況我寧願像水木清華string.split('/').pop()(JavaScript的)或array_pop(split('/', string)) (對於PHP,我不知道你正在使用的語言)而不是正則表達式。

+0

我知道這個解決方案'.split('/').pop();'但問題標記爲正則表達式.... :-) –

+0

+1非常好的解決方案。 – Christoph

1

嘗試使用負前瞻(?!\\)(.(?!\\))+$

+0

js支持netgative展望?或者它是負面看起來後面我不記得 –

+0

有點矯枉過正,但工作;) – Christoph

+0

@RoyiNamir任何情況下lookbehinds不支持,lookaheads是。 – Christoph

0

這應做到:

([\w\d_-]*)\.?[^\\\/]*$ 

This thread對JavaScript的一些例子。

或者,您可以在「\」上創建數組並獲取數組中的最後一個。