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

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

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

开始吧:

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

1 //匹配对象
2             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\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]";
3
4             //1.查询是否存在“订单号”数据的字符串
5             var isExists = Regex.IsMatch(expl, @"价格");
6             Console.WriteLine("1.查询是否存在“订单号”数据的字符串");
7             Console.WriteLine(isExists);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8.大小写匹配结果

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

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

  9.忽略大小写

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

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

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

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

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

  代码:

 1 //C#-正则,常用几种数据解析-端午快乐
 2
 3             //匹配对象
 4             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\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]";
 5
 6             //1.查询是否存在“订单号”数据的字符串
 7             var isExists = Regex.IsMatch(expl, @"价格");
 8             Console.WriteLine("1.查询是否存在“订单号”数据的字符串");
 9             Console.WriteLine(isExists);
10
11             //2.查询一个“价格”(不包含小数部分)
12             var m02 = Regex.Match(expl, "\"价格\":\\d+");
13             Console.WriteLine("\n2.查询一个“价格”(不包含小数部分)");
14             Console.WriteLine(m02.Value);
15
16             //3.查询一个订单“价格”(包含价格的小数部分)
17             var m03 = Regex.Match(expl, "\"价格\":[^,]+");
18             Console.WriteLine("\n3.查询一个订单“价格”(包含价格的小数部分)");
19             Console.WriteLine(m03.Value);
20
21             //4.查询全部订单“价格”
22             MatchCollection m04 = Regex.Matches(expl, "\"价格\":[^,]+");
23             Console.WriteLine("\n4.查询全部订单“价格”");
24             foreach (Match m004 in m04)
25             {
26                 Console.WriteLine(m004.Value);
27             }
28
29             //5.查询全部订单“价格”,输出价格信息
30             MatchCollection m05 = Regex.Matches(expl, "\"价格\":(?<price>[^,]+)");
31             Console.WriteLine("\n5.查询全部订单“价格”,输出价格信息");
32             foreach (Match m005 in m05)
33             {
34                 Console.WriteLine(m005.Groups["price"].Value);
35             }
36
37             //6.查询全部订单信息,输出信息
38             MatchCollection m06 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>[^,]+)\"");
39             Console.WriteLine("\n6.查询全部订单信息,输出信息");
40             foreach (Match m006 in m06)
41             {
42
43
44                 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
45                  m006.Groups["orderid"], m006.Groups["orderid"].Value,
46                  m006.Groups["price"], m006.Groups["price"].Value,
47                  m006.Groups["createtime"], m006.Groups["createtime"].Value,
48                  m006.Groups["paystatus"], m006.Groups["paystatus"].Value);
49             }
50
51             //7.查询“未支付”订单信息
52             MatchCollection m07 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>未支付)\"");
53             Console.WriteLine("\n7.查询“未支付”订单信息");
54             foreach (Match m007 in m07)
55             {
56
57
58                 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}",
59                  m007.Groups["orderid"], m007.Groups["orderid"].Value,
60                  m007.Groups["price"], m007.Groups["price"].Value,
61                  m007.Groups["createtime"], m007.Groups["createtime"].Value,
62                  m007.Groups["paystatus"], m007.Groups["paystatus"].Value);
63             }
64
65             //8.大小写匹配结果
66             var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO");
67             Console.WriteLine("\n8.大小写匹配结果");
68             Console.WriteLine(m08);
69
70             //9.忽略大小写
71             var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase);
72             Console.WriteLine("\n9.忽略大小写");
73             Console.WriteLine(m09);
74
75             //10.匹配有空格的字符串信息
76             var m10 = Regex.Match("端 午 快 乐", "[^A]+");
77             Console.WriteLine("\n10.匹配有空格的字符串信息");
78             Console.WriteLine(m10.Value);
79
80             Console.ReadLine();

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

时间: 2024-11-17 10:17:26

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

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

爬虫学习 05.Python网络爬虫之三种数据解析方式 引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于r

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

原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/oman001/article/details/79063278 引言 JSON数据现在是我们开发中用的最多的,百分之八十的数据都是通过JSON方式进行传输,那么想要学好JSON解析就要了解什么是JSON数据,怎么快速解析它从而提升开发效率. 什么是JSON数据? 下面这里有一段JS

iOS 常用四种数据存储方式

iOS 常用四种数据存储方式 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅, ,使得用户体验更好.下面介绍?一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前?一个方法告诉系统怎么对对象进行编码,而后?一个方法则是告诉系统怎么对对象进行解码.例如对Possession对

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

引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析

《Python网络爬虫之三种数据解析方式?

回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析 进行持

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

回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析 进行持

25-2 三种数据解析方式

引言:回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析

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

一.正则解析 常用正则表达式回顾: 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w \s :所有的空白字符包,括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S : 非空白 数量修饰: * : 任意多次 >=0 + : 至少1次 >=1 ? : 可有可无 0次或者1次 {m} :固定m次 hello{3,} {m,} :至少m次 {m

三种数据解析方式

数据解析: - 正则 - bs4 - xpath xpath在爬虫中的使用流程 -1. 下载: pip install lxml -2. 导包 from lxml import etree -3. 创建etree对象进行指定数据的解析 (如果HTML文件格式或语法有问题的话,etree对象会创建失败) -本地:etree=etree.parse('本地文件路径') etree.xpath('xpath表达式') -网络:etree=etree.HTML('网络请求到的页面数据") etree.x