【问题标题】:Regular expression to get the Name from URL link从 URL 链接获取名称的正则表达式
【发布时间】:2012-10-09 00:49:47
【问题描述】:

我在 SharePoint 2010 中有一个超链接字段(又名列)。

假设它叫SalesReportUrl。网址如下所示:

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

超链接字段将值存储在两个字段(链接和描述)中。

如果我想从 URL 中取出 October2012Library,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

【问题讨论】:

  • 你试过Uri类吗?
  • 不确定如何在 Workflow 中使用 Uri 类。我正在尝试从超链接列中获取文档库名称。
  • 嗯。没有工作。我可以使用 substring 函数从超链接列(或字段)中提取文档库名称吗

标签: c# regex sharepoint sharepoint-2010


【解决方案1】:

这个怎么样(正如丹尼尔建议的那样):

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));

【讨论】:

  • 这比我(现在是前)的答案要好...我似乎总是没能找到让Uri 变得容易的成员:-(
  • @Richard 我总是在实例化后设置一个断点,然后使用监视窗口来发现有趣的成员。
  • Uri.Segments.Length &lt; 2 之前一切顺利。也许Uri.Segments.Skip(2).FirstOrDefault(),所以如果没有足够的段,你会得到一个null
  • 是的......绝对比我说同样的话的冗长方式便宜;)
  • 这不起作用。我在列表中有一个列,列类型是超链接。 SP 存储带有描述的超链接。 string url = hardcode url 不适用于我的情况。我也不能在工作流程中使用 Uri。可能是一个查找 Forms 或 forms 并获取位于 /forms 之前的库名称的 RegEx,并确保不包含库名称之前的所有值。
【解决方案2】:

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

match's group[1] 是您需要的值。它在 url 中获得第三部分(除以 /)。如果您需要确保它后面跟着其他部分,即表格,请将其添加到末尾。

【讨论】:

  • 它给了我 October2012Library/Forms/customview.aspx 结果。 /之后我不需要任何东西。我该怎么做?
  • 我不得不在工作流中创建另一个变量来摆脱剩余的字符串。我使用了 (/Forms.*),现在我有了一个库名称。
  • 谁能建议一个完整的正则表达式而不是 2 倍正则表达式?
【解决方案3】:

尝试使用这个new RegEx("SalessiteCollection/(.+?)/Forms").match(&lt;urlString&gt;).groups[1].value

虽然这是一个粗略的答案,但您可能需要做一些更正,但我希望您能理解我要解释的内容。

【讨论】:

  • 网站集是一个变量,除非它被称为 SalessiteCollection。
【解决方案4】:

也许是这个?

http:\/\/([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}\/[a-zA-Z]*\/([a-zA-Z0-9]*)\/

http://rubular.com/r/LuuuORPRXt

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 2013-09-10
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多