我正在尝试检索URL的前缀。该URL可能如下所示:
我希望能够提取单词" Index"出来的。我对它进行了一次刺杀,但却无法得到它:
public string GetPrefix(string URL)
{
Regex regex = new Regex("^/(.*?)[\\?/]*");
var matches = regex.Match(URL);
return matches.Groups[1].ToString();
}
答案 0 :(得分:2)
尝试:
^/([^/?])+
它匹配/
和任何不是/
或?
1 的字符到 n 次。匹配还会将检索到的前缀存储在捕获组$1
中。
答案 1 :(得分:1)
^/(?<action>[^/?#]+)
你必须照顾所有3“/”,“?”和“#”
此外,您可以命名捕获组以获得更好的注释。
public string GetPrefix(string url)
{
Regex regex = new Regex(@"^/(?<action>[^/?#]+)");
var match = regex.Match(url);
return match.Groups["action"].Value;
}
答案 2 :(得分:0)
您可以在此处使用System.Uri
命名空间中的System.Web
。即使你可能有相对的URL,这应该有效:
using System.Web;
...
var URL = "/Index?var1=value1";
var uri = new Uri(new Uri("http://example.com"), URL); // Init the URI instance
Console.WriteLine(uri.Segments.LastOrDefault().Trim('/')); // Get the last segment trimming any slashes
请参阅IDEONE demo