正则表达式解析url参数

Posted 意犹未尽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式解析url参数相关的知识,希望对你有一定的参考价值。

解析url参数正则:(?<=\?|&)[\w\={},:‘‘""]*(?<=[^#])

正好项目中要用到 捣鼓了好久还是不会.最终放弃使用split分割的方式解析发现好落伍

  public static NameValueCollection QueryString(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return null;
            }
          var arr=path.Split(new char[] { ? }, StringSplitOptions.RemoveEmptyEntries);
          if (arr.Length != 2)
          {
              return null;
          }
          var values = arr[1];
          arr = values.Split(new char[] { & }, StringSplitOptions.RemoveEmptyEntries);
          if (arr == null) return null;
          string[] itemvalues;
          NameValueCollection nvcs = new NameValueCollection();
          foreach (var item in arr)
          {
              itemvalues = item.Split(new char[] { = }, StringSplitOptions.RemoveEmptyEntries);
              if (itemvalues == null || itemvalues.Length == 0) continue;
              nvcs.Add(itemvalues[0], itemvalues.Length <= 1 ? string.Empty : itemvalues[1]);
          }
          return nvcs;
        }

 

然后去看正则的文档 修改后版本

 public static NameValueCollection QueryString(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return null;
            }
            var m = Regex.Matches(path, @"(?<=\?|&)[\w\={},:‘‘""]*(?<=[^#])", RegexOptions.None);
            if (m.Count <= 0)
            {
                return null;
            }
            NameValueCollection nvcs = new NameValueCollection();
            string[] itemvalues = null;
            for (int i = 0; i < m.Count; i++)
            {
                itemvalues = m[i].Value.Split(new char[] { = }, StringSplitOptions.RemoveEmptyEntries);
                if (itemvalues == null || itemvalues.Length == 0) continue;
                nvcs.Add(itemvalues[0], itemvalues.Length <= 1 ? string.Empty : itemvalues[1]);
            }
            return nvcs;
        }

 

以上是关于正则表达式解析url参数的主要内容,如果未能解决你的问题,请参考以下文章

python 之 Django框架(路由系统include命名URL和URL反向解析命名空间模式)

java怎样获取url参数

第61篇 Django 路由系统 正则表达式和二级路由 路由的命名和反向解析

java怎么获取url上的参数

url 上的正则表达式无法在没有 GET 参数的情况下拆分散列

通过 Java 正则表达式提取 semver 版本字符串的片段