2016-11-10 71 views
2

是否可以從URL獲取文件夾名稱?正則表達式從URL中獲取文件夾名稱

例如,

https://inside.nov.com/wh/pc/testSourceLib/Folder Z/SubFolder Z1/Copy files from one Document Library to another using Nintex Workflow _ My Learnings.pdf 

其中

  • https://inside.nov.com/wh/pc/是Web URL
  • testSourceLib是庫名稱
  • Folder Z/Subfolder z1的文件夾名稱

我需要從上面的URL中提取/Folder Z/Subfolder z1

我試過([^\/]*)$它給我的文件名稱爲Copy files from one Document Library to another using Nintex Workflow _ My Learnings.pdf

+0

嘗試'[^/] +(?=/[^ /] * $)'提取選項。 –

+0

是否有某些原因需要使用正則表達式,而不是使用內置的['Uri.GetComponents'](https://msdn.microsoft.com/en-us/library/system.uri.getcomponents%28v = vs.110%29.aspx)已經做到這一點的方法? –

+0

是的。我正在使用Nintex工作流程,它只需要.net友好的正則表達式,我不能有任何C#代碼。 –

回答

1

您可以使用基於正則表達式的前瞻與提取選項:

/[^/]+/[^/]+(?=/[^/]*$) 

regex demo

enter image description here

圖案的詳細資料

  • [^/]+ - 1個或多個字符比/其它...
  • (?=/[^/]*$) - 隨後以比/[^/]*)其它/,零個或多個字符,然後字符串($)的端部。該構造是一個正向前視,它是一個零寬度斷言,它不會消耗文本(不會將其放入返回的匹配中),這需要將某些文本放在字符串中當前位置的右側。

爲了縮短模式的一點,你可以包裹/[^/]+子模式與非捕獲組和其應用限制量詞:

(?:/[^/]+){2}(?=/[^/]*$) 

another demo

+0

這給了我「子文件夾Z1」,但我需要「/文件夾Z /子文件夾Z1 /」作爲輸出 –

+0

查看更新的答案。 –

+0

謝謝你Wiktor。你拯救了我的一天。謝謝謝謝謝謝。 –

相關問題