C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐。
这里分享的是几个在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#-正则,常用几种数据解析-端午快乐的更多相关文章
- JSON三种数据解析方法(转)
原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...
- Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- 05.Python网络爬虫之三种数据解析方式
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python爬虫之三种数据解析方式
一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...
- 05,Python网络爬虫之三种数据解析方式
回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...
- 《Python网络爬虫之三种数据解析方式》
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python网络爬虫之三种数据解析方式
1. 正则解析 正则例题 import re # string1 = """<div>静夜思 # 窗前明月光 # 疑是地上霜 # 举头望明月 # 低头思故乡 ...
- python网络爬虫数据中的三种数据解析方式
一.正则解析 常用正则表达式回顾: 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线 ...
- Python爬虫的三种数据解析方式
数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
随机推荐
- 菜鸟学Struts2——Interceptors
昨天学习Struts2的Convention plugin,今天利用Convention plugin进行Interceptor学习,虽然是使用Convention plugin进行零配置开发,这只是 ...
- Android中手机录屏并转换GIF的两种方式
之前在博文中为了更好的给大家演示APP的实现效果,本人了解学习了几种给手机录屏的方法,今天就给大家介绍两种我个人用的比较舒服的两种方法: (1)配置adb环境后,使用cmd命令将手机界面操作演示存为视 ...
- HTML 获取屏幕、浏览器、页面的高度宽度
本篇主要介绍Web环境中屏幕.浏览器及页面的高度.宽度信息. 目录 1. 介绍:介绍页面的容器(屏幕.浏览器及页面).物理尺寸与分辨率.展示等内容. 2. 屏幕信息:介绍屏幕尺寸信息:如:屏幕.软件可 ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
- 使用AWS亚马逊云搭建Gmail转发服务(三)
title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...
- 参考bootstrap中的popover.js的css画消息弹框
前段时间小颖的大学同学给小颖发了一张截图,图片类似下面这张图: 小颖当时大概的给她说了下,其实小颖也不知道上面那个三角形怎么画嘻嘻,给她说了DOM结构,具体的css让她自己百度,今天小颖自己参考boo ...
- 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案
前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- intellij idea 13&14 插件推荐及快速上手建议
IntelliJIDEA插件安装 首页 > blog Tags : intellij IDEA插件安装 更新日期: 2015-04-29 IntelliJ IDEA插件下载地址: http:// ...
- CSharpGL(20)用unProject和Project实现鼠标拖拽图元
CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...