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

这里分享的是几个在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. H5实现摇一摇技术总结

    摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...

  2. TODO:Laravel 内置简单登录

    TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...

  3. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

  4. 数据的双向绑定 Angular JS

    接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...

  5. 注释生成Api文档

    1.开发背景 最近一直在写dubbo接口,以前总是用word文档写接口描述然后发给别人.现在太多了,而且跟别人对接联调的人家急着用,根本没时间去写word文档.那就想想怎么用doc文档注释自动生成接口 ...

  6. [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法

    安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本文介绍如何在安装后更改安全模式. 如果在安装过程中选择&q ...

  7. 【干货分享】流程DEMO-付款申请单

    流程名: 付款申请单  业务描述: 包括每月固定开支.固定资产付款.办公用品付款.工资发放.个人所得税缴纳.营业税缴纳.公积金.社保缴纳和已签订合同的按期付款,最后是出纳付款,出纳核对发票. 流程发起 ...

  8. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  9. 15个C++项目列表

    实验楼上有很多C++的实战项目,从简单到进阶,学习每个项目都可以掌握相应的知识点. 如果你还是C++新手的话,那么这个C++的项目列表你可以拿去练手实战开发,毕竟学编程动手实践是少不了的! 如果你不知 ...

  10. OpenGL ES: Array Texture初体验

    [TOC] Array Texture这个东西的意思是,一个纹理对象,可以存储不止一张图片信息,就是说是是一个数组,每个元素都是一张图片.这样免了频繁地去切换当前需要bind的纹理,而且可以节省系统资 ...