好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

例如以下字符串:

?

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);

这时候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 就是我们要得的数据:[北京市 网通]。

dy("nrwz");

查看更多关于在C#中如何使用正式表达式获取匹配所需数据的详细内容...

  阅读:39次