2012-10-08 202 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