在等待几个小时就是端午节了,这里预祝各位节日快乐。

这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢。

开始吧:

1.查询是否存在“订单号”数据的字符串

 //匹配对象
var expl = "[{\"订单号\":2006,\"价格\":888.90,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2007,\"价格\":999.99,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2008,\"价格\":999,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]"; //1.查询是否存在“订单号”数据的字符串
var isExists = Regex.IsMatch(expl, @"价格");
Console.WriteLine("1.查询是否存在“订单号”数据的字符串");
Console.WriteLine(isExists);

心得:IsMatch方法判断是否存在匹配的项,直接往方法里面填写需要搜索的信息就行。

2.查询一个“价格”(不包含小数部分)

 //2.查询一个“价格”(不包含小数部分)
var m02 = Regex.Match(expl, "\"价格\":\\d+");
Console.WriteLine("\n2.查询一个“价格”(不包含小数部分)");
Console.WriteLine(m02.Value);

  心得:Match直接获取匹配项的值

  3.查询一个订单“价格”(包含价格的小数部分)

 //3.查询一个订单“价格”(包含价格的小数部分)
var m03 = Regex.Match(expl, "\"价格\":[^,]+");
Console.WriteLine("\n3.查询一个订单“价格”(包含价格的小数部分)");
Console.WriteLine(m03.Value);

  心得:使用正则的^匹配数据

  4.查询全部订单“价格”

 //4.查询全部订单“价格”
MatchCollection m04 = Regex.Matches(expl, "\"价格\":[^,]+");
Console.WriteLine("\n4.查询全部订单“价格”");
foreach (Match m004 in m04)
{
Console.WriteLine(m004.Value);
}

  心得:Matches获取到匹配的集合组

  5.查询全部订单“价格”,输出价格信息

  //5.查询全部订单“价格”,输出价格信息
MatchCollection m05 = Regex.Matches(expl, "\"价格\":(?<price>[^,]+)");
Console.WriteLine("\n5.查询全部订单“价格”,输出价格信息");
foreach (Match m005 in m05)
{
Console.WriteLine(m005.Groups["price"].Value);
}

  心得:使用正则(?<price>xxxx)格式获取匹配组中的某一个项的值

  6.查询全部订单信息,输出信息

  //6.查询全部订单信息,输出信息
MatchCollection m06 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>[^,]+)\"");
Console.WriteLine("\n6.查询全部订单信息,输出信息");
foreach (Match m006 in m06)
{ Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
m006.Groups["orderid"], m006.Groups["orderid"].Value,
m006.Groups["price"], m006.Groups["price"].Value,
m006.Groups["createtime"], m006.Groups["createtime"].Value,
m006.Groups["paystatus"], m006.Groups["paystatus"].Value);
}

  心得:获取匹配组中的多个项的值

  7.查询“未支付”订单信息

 //7.查询“未支付”订单信息
MatchCollection m07 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>未支付)\"");
Console.WriteLine("\n7.查询“未支付”订单信息");
foreach (Match m007 in m07)
{ Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
m007.Groups["orderid"], m007.Groups["orderid"].Value,
m007.Groups["price"], m007.Groups["price"].Value,
m007.Groups["createtime"], m007.Groups["createtime"].Value,
m007.Groups["paystatus"], m007.Groups["paystatus"].Value);
}

  心得:匹配不同条件的集合组

  8.大小写匹配结果

 //8.大小写匹配结果
var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO");
Console.WriteLine("\n8.大小写匹配结果");
Console.WriteLine(m08);

  心得:Regex默认匹配区分大小写

  9.忽略大小写

 //9.忽略大小写
var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase);
Console.WriteLine("\n9.忽略大小写");
Console.WriteLine(m09);

  心得:使用RegexOptions项忽略大小写

  10.匹配有空格的字符串信息

  //10.匹配有空格的字符串信息
var m10 = Regex.Match("端 午 快 乐", "[^A]+");
Console.WriteLine("\n10.匹配有空格的字符串信息");
Console.WriteLine(m10.Value);

  心得:正则的确很强大哈哈

  代码:

 //C#-正则,常用几种数据解析-端午快乐

             //匹配对象
var expl = "[{\"订单号\":2006,\"价格\":888.90,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2007,\"价格\":999.99,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2008,\"价格\":999,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]"; //1.查询是否存在“订单号”数据的字符串
var isExists = Regex.IsMatch(expl, @"价格");
Console.WriteLine("1.查询是否存在“订单号”数据的字符串");
Console.WriteLine(isExists); //2.查询一个“价格”(不包含小数部分)
var m02 = Regex.Match(expl, "\"价格\":\\d+");
Console.WriteLine("\n2.查询一个“价格”(不包含小数部分)");
Console.WriteLine(m02.Value); //3.查询一个订单“价格”(包含价格的小数部分)
var m03 = Regex.Match(expl, "\"价格\":[^,]+");
Console.WriteLine("\n3.查询一个订单“价格”(包含价格的小数部分)");
Console.WriteLine(m03.Value); //4.查询全部订单“价格”
MatchCollection m04 = Regex.Matches(expl, "\"价格\":[^,]+");
Console.WriteLine("\n4.查询全部订单“价格”");
foreach (Match m004 in m04)
{
Console.WriteLine(m004.Value);
} //5.查询全部订单“价格”,输出价格信息
MatchCollection m05 = Regex.Matches(expl, "\"价格\":(?<price>[^,]+)");
Console.WriteLine("\n5.查询全部订单“价格”,输出价格信息");
foreach (Match m005 in m05)
{
Console.WriteLine(m005.Groups["price"].Value);
} //6.查询全部订单信息,输出信息
MatchCollection m06 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>[^,]+)\"");
Console.WriteLine("\n6.查询全部订单信息,输出信息");
foreach (Match m006 in m06)
{ Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
m006.Groups["orderid"], m006.Groups["orderid"].Value,
m006.Groups["price"], m006.Groups["price"].Value,
m006.Groups["createtime"], m006.Groups["createtime"].Value,
m006.Groups["paystatus"], m006.Groups["paystatus"].Value);
} //7.查询“未支付”订单信息
MatchCollection m07 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>未支付)\"");
Console.WriteLine("\n7.查询“未支付”订单信息");
foreach (Match m007 in m07)
{ Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
m007.Groups["orderid"], m007.Groups["orderid"].Value,
m007.Groups["price"], m007.Groups["price"].Value,
m007.Groups["createtime"], m007.Groups["createtime"].Value,
m007.Groups["paystatus"], m007.Groups["paystatus"].Value);
} //8.大小写匹配结果
var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO");
Console.WriteLine("\n8.大小写匹配结果");
Console.WriteLine(m08); //9.忽略大小写
var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase);
Console.WriteLine("\n9.忽略大小写");
Console.WriteLine(m09); //10.匹配有空格的字符串信息
var m10 = Regex.Match("端 午 快 乐", "[^A]+");
Console.WriteLine("\n10.匹配有空格的字符串信息");
Console.WriteLine(m10.Value); Console.ReadLine();

  此时此刻想法:端午3天放假,一个人在北京雾霾城市,的确无聊,还好有dota1,有兴趣朋友一起来吧,11(神牛步行3)

C#-正则,常用几种数据解析-端午快乐的更多相关文章

  1. JSON三种数据解析方法(转)

    原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  2. Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  3. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  4. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  5. 05,Python网络爬虫之三种数据解析方式

    回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...

  6. 《Python网络爬虫之三种数据解析方式》

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  7. Python网络爬虫之三种数据解析方式

    1. 正则解析 正则例题 import re # string1 = """<div>静夜思 # 窗前明月光 # 疑是地上霜 # 举头望明月 # 低头思故乡 ...

  8. python网络爬虫数据中的三种数据解析方式

    一.正则解析 常用正则表达式回顾: 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线 ...

  9. Python爬虫的三种数据解析方式

    数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...

随机推荐

  1. C# 文章导航

    1. C#相关文章 1.1 C# 基础(一) 访问修饰符.ref与out.标志枚举等等 1.2 C# 基础(二) 类与接口 1.3 C# DateTime日期格式化 1.4 C# DateTime与时 ...

  2. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  3. Dapper.Contrib:GetAsync<T> only supports an entity with a [Key] or an [ExplicitKey] property

    异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key ...

  4. 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter

    中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...

  5. 开始学nodejs——net模块

    net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket ...

  6. Nested Loops join时显示no join predicate原因分析以及解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6238844.html 最近遇到一个存储过程在某些特殊的情况下,效率极其低效, 至于底下到什么程度我现在都没有一个确切的数据, ...

  7. 关于BAPI_PATIENT_CREATE(病患主数据创建)

    第一次使用BAPI,遇到几个问题.现总结如下. CALL FUNCTION 'BAPI_PATIENT_CREATE' EXPORTING client = * INSTITUTION = '*' * ...

  8. Android studio使用gradle动态构建APP(不同的包,不同的icon、label)

    最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...

  9. SQL字符串函数

    LEN() :计算字符串长度(字符的个数.)datalength();//计算字符串所占用的字节数,不属于字符串函数.测试varchar变量与nvarchar变量存储字符串a的区别.见备注1.LOWE ...

  10. weinre- 调试移动端页面

    相信很多前端的小伙伴一定会遇到一个问题, 比如我编写完一个页面,某个地方需要进行调整细节或者是哪个地方怎么调整都不对,在pc端还好,有google,firefox之类可以调节页面的工具,虽说这些工具有 ...