2012-10-08 161 views
1

得到名字我有一個超鏈接字段(又名列)在SharePoint 2010正則表達式來從URL鏈接

說這是所謂的SalesReportUrl。該網址如下所示:

http://portal.cab.com/SalessiteCollection/October2012Library/Forms/customview.aspx 

超鏈接字段將值存儲在兩個字段(鏈接和說明)中。

如果我想將October2012Library從Url中取出,RegEx是什麼?

我試過,但它絕對不是工作:

@"<a[\s]+[^>]*?href[\s]?=[\s\"\']+(.*?)[\"\']+.*?>([^<]+|.*?)?<\/a>"; 

我也試過:

^(.*?/)?Forms/$ 

,但沒有運氣。

我想的SharePoint商店超鏈接是這樣的:

http://portal.cab.com/SalessiteCollection/October2012Library/Forms/customview.aspx, some description 

看起來這有一個解決方案。但什麼是語法子字符串獲取列表或庫名稱? https://sharepoint.stackexchange.com/questions/40712/get-list-title-in-sharepoint-designer-workflow

+3

你嘗試過'Uri'類嗎? –

+0

不確定如何在工作流程中使用Uri類。我試圖從超鏈接列中獲取文檔庫名稱。 – Axiom

+0

嗯。沒有工作。我可以使用子字符串函數從超鏈接列(或字段)中提取文檔庫名稱: – Axiom

回答

0

爲http:// [^ /] +/[^ /] + /([^ /] +)/

match's group [1]是您需要的值。它會得到url中的第三部分(除以/)。如果你需要確保它後面跟着其他部分,即表單,最後添加它。

+0

它給了我October2012Library/Forms/customview.aspx作爲結果。 /之後我不需要任何東西。我怎樣才能做到這一點? – Axiom

+0

我不得不在工作流中創建另一個變量來擺脫餘數字符串。我使用(/Forms.*),現在我有一個庫名稱。 – Axiom

+0

任何人都可以建議一個完整的正則表達式而不是2倍的正則表達式? – Axiom

0

嘗試使用此new RegEx("SalessiteCollection/(.+?)/Forms").match(<urlString>).groups[1].value

雖然這是一個粗略的答案,你可能需要做一些修改,但我希望你明白我試圖解釋。

+0

網站集是一個變量,除非它被稱爲SalessiteCollection。 – urlreader

5

這個怎麼樣(丹尼爾建議):

string url = @"http://portal.cab.com/SalessiteCollection/October2012Library/Forms/customview.aspx"; 
Uri uri = new Uri(url); 
if(uri.Segments.Length > 2)) 
    Console.WriteLine(uri.Segments[2]); // will output "October2012Library/" 

您可以添加.Replace("/", string.Empty)如果你想擺脫 「/」

Console.WriteLine(uri.Segments[2].Replace("/", string.Empty)); 
+0

這比我的(現在的)答案要好...我似乎總是無法發現那個使用'Uri'變得簡單的成員:-( – Richard

+0

@Richard我總是在實例化後設置一個斷點,然後使用觀察窗口找到有趣的成員 – Nasreddine

+0

不知道uri有沒有.segments。cool。 – urlreader