在C#中使用正则表达式自动匹配并获取所需要的数据
2023-09-11 14:14:06 时间
正则表达式能根据设置匹配各种数据(比如:e-mail地址,电话号码,身份中号码等等)。正则表达式功能强大,使用灵活,C#,Java,JavaScript等多种语言都支持正则表达式。在互联网上“抓取数据”更是少不了使用正则表达式。今天我要说的是在C#中使用正则表达式自动匹配并获取所需要的数据。
从下面是某个IP查询网站返回查询结果的一个部分(字符串),现在就是要从这个字符串中获取“查询结果1:”后面的“北京市 网通”。
< td align ="center" >< ul >< li > 查询结果1:北京市 网通 </ li >< li > 查询结果2:北京市 网通 </ li >< li > 查询结果3:北京市 网通 </ li ></ ul ></ td >
C#相关代码如下:
string srcString = " <td align=\ " center\ " ><ul><li>查询结果1:北京市 网通</li><li>查询结果2:北京市 网通</li><li>查询结果3:北京市 网通</li></ul></td> " ;
// 匹配 "<li>查询结果1:" 与 "</li>" 之间的所有字符的正则表达式
string regexStr = " <li>查询结果1:(?<key>.*?)</li> " ;
Regex r = new Regex(regexStr, RegexOptions.None);
Match mc = r.Match(srcString);
string dataStr = mc.Groups[ " key " ].Value;
// 匹配 "<li>查询结果1:" 与 "</li>" 之间的所有字符的正则表达式
string regexStr = " <li>查询结果1:(?<key>.*?)</li> " ;
Regex r = new Regex(regexStr, RegexOptions.None);
Match mc = r.Match(srcString);
string dataStr = mc.Groups[ " key " ].Value;
说明:
这里最关键的是设置正则表达式: " <li>查询结果1:(?<key>.*?)</li> "。
字符 |
描述 |
<key> |
根据key获取由正则表达式匹配的值。 |
. |
匹配除 "\n" 之外的任何单个字符。 |
* |
匹配前面的子表达式零次或多次。 |
? |
跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m})后面时,匹配模式是非贪婪的;非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 |
dataStr 就是我们要得的数据:“北京市 网通”。
相关文章
- C#-常用
- C#通过代码注册COM组件
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
- 浅谈 .NET 中的对象引用、非托管指针和托管指针 理解C#中的闭包
- C# 将前端传来的图片文件分别以大图和缩略图保存
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 如何在C#项目中使用NHibernate
- C#【中级篇】 C# 正则表达式
- C#,铁蛋·奥纳奇数(Geek Onacci Number)的算法与源代码
- C# 正则表达式
- C# 命名空间 值类型 引用类型 字符串
- 【C#进阶3-3】C#集合、泛型
- 【C#基础1-8】C#的正则表达式
- C#并发编程-异步编程基础-报告进度
- C# 合并两个不同类型集合数据
- C#-How to refresh ASPxImage using ASPxCallbackPanel
- C#-WebApi 路由机制剖析
- C#中【pdb】文件
- c# 并行计算(大量循环处理的场景下)
- 【C#】BackgroundWorker类传递参数
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net