需求:获取一串字符串中,正则匹配出需要的数据。
例如以下字符串:
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 就是我们要得的数据:“北京市 网通”。
本文地址:https://www.stayed.cn/item/10066
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我