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 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
随机推荐
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 深入Java虚拟机--判断对象存活状态
程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...
- 【深入Java虚拟机】之四:类加载机制
类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验 ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...
- springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪
获取下载地址 QQ 313596790 A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技术:31359679 ...
- 如何编译Zookeeper源码
1. 安装Ant Ant下载地址:http://ant.apache.org/bindownload.cgi 解压即可. 2. 下载Zookeeper源码包 https://github.com/ap ...
- DBCP 配置备注
<property name="initialSize" value="5"></property> <property name ...
- Maven实战:pom.xml与settings.xml
pom.xml与settings.xml pom.xml与setting.xml,可以说是Maven中最重要的两个配置文件,决定了Maven的核心功能,虽然之前的文章零零碎碎有提到过pom.xml和s ...