正则表达式来解析字符串url链接

时间:2011-05-26 01:08:35

标签: c# asp.net regex url url-rewriting

我正在寻找一种方法,在不使用System.Uri

的情况下将网址链接解析为以下细分
  

/Default.aspx/123/test?var1=val1

我需要将此网址链接分解为值:

  1. 文件
  2. PATHINFO
  3. 查询字符串

3 个答案:

答案 0 :(得分:2)

这是一个:

string pattern = @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)"

Origin Link

答案 1 :(得分:1)

string pattern= "\b(?<protocol>https?|ftp|gopher|telnet|file|notes|ms-help)://(?<domain>[-A-Z0-9.]+)(?<file>/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(?<parameters>\?[-A-Z0-9+&@#/%=~_|!:,.;]*)?"

这将生成命名组,检查您要提取的内容

答案 2 :(得分:1)

这是我的代码:

   var match = Regex.Match(internalUrl,
                            @"^\/([\w|\/|\-|\,|\s]+)\.([a-zA-Z]{2,5})([\w|\/|\-|\,|\s]*)\??(.*)",
                            RegexOptions.IgnoreCase | RegexOptions.Singleline |
                            RegexOptions.CultureInvariant | RegexOptions.Compiled);
    if (match.Success)
    {
        var filePath = match.Groups[1].Value;
        var fileExtention = match.Groups[2].Value;
        var pathInfo = match.Groups[3].Value;
        var queryString = match.Groups[4].Value;

        log.Debug("FilePath: " + filePath);
        log.Debug("FileExtention: " + fileExtention);
        log.Debug("PathInfo: " + pathInfo);
        log.Debug("QueryString: " + queryString);
    }