欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在C#中如何使用正式表达式获取匹配所需数据

程序员文章站 2022-09-07 11:45:17
需求:获取一串字符串中,正则匹配出需要的数据。 例如以下字符串: string temp ="errorcode:-1,message:{"userid...

需求:获取一串字符串中,正则匹配出需要的数据。

例如以下字符串:

string temp ="errorcode:-1,message:{"userid" : "1000","username" : "zhangsan"}";

我需要获得“-1”和“{"userid" : "1000","username" : "zhangsan"}”;

接下来,就使用正则去匹配:

using system.text.regularexpressions;
string temp = "errorcode:-,message:{\"userid\" : \"\",\"username\" : \"zhangsan\"}";
regex reg = new regex("errorcode:(?<key>.*?),message:{(?<key>.*?)}");
match match = reg.match(temp);
string tempstr = match.groups["key"].value + "--" + match.groups["key"].value;
messagebox.show(tempstr); 

在C#中如何使用正式表达式获取匹配所需数据

这时候tempstr得到的是”-1--{"userid" : "1000","username" : "zhangsan"}“

下面给大家分享一段代码有关c#中使用正则表达式自动匹配并获取所需要的数据

正则表达式能根据设置匹配各种数据(比如: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:(?<key>.*?)</li> "。

字符

描述

<key>

根据key获取由正则表达式匹配的值。

.

匹配除 "\n" 之外的任何单个字符。

*

匹配前面的子表达式零次或多次

?

跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m})后面时,匹配模式是非贪婪的;非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。



datastr 就是我们要得的数据:“北京市 网通”。