正则表达式解析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反向解析命名空间模式)
第61篇 Django 路由系统 正则表达式和二级路由 路由的命名和反向解析