1

我有一个带有这个脚本的 html 页面:

flashembed("header_container", 
{"src": "http://****.swf?__cv=3cfd4cc0ac1fad53803ff73629e93d00",
"version": [8,0],
"expressInstall": "http://****.swf?__cv=87411ea96ce42429f52b28683e7af400",
"width": 860,"height": 229,"wmode": "opaque","id": "flashHeader",
"onFail": 
function(){onFailFlashembed();}}, 
{"cdn": "http://*****/","nosid": "1","lol": "89,04","isGuestUser": "",
"navPoint": "1","eventItemEnabled": "",
"supporturl":"indexInternal.es%3Faction%3Dsupport%26back%3DinternalStart",




"***ouser***": "817",



"serverdesc": "Italia 3","server_code": "1","lang": "it","coBrandImgUrl": "",
"coBrandHref": "","customSkinURL": "","messaging": "1"});

hackEmailInviteDialog();
jQuery('#emailInviteCloseButton').click(function() 
{
.....
}

我需要从此页面中提取字段“用户”。我试过:

string pattern= @"""ouser"": "".*?,""serverdesc""";
string output = Regex.Replace(ConnectionAPI.responseFromServer, pattern, ""); 

但在输出中有整个页面......

4

2 回答 2

3

更新正则表达式以匹配第二对引号之间的任何内容,以防万一它们并不总是数字。

Match match = 
    Regex.Match(
        ConnectionAPI.responseFromServer, 
        "\"\\**?ouser\\**?":\\s*\"([^\"]*)\",",
        RegexOptions.IgnoreCase);
String output = String.Empty;
// Here we check the Match instance.
if (match.Success)
{
    // Finally, we get the Group value and display it.
    output = match.Groups[1].Value;
    Console.WriteLine(output);
}
于 2012-06-07T23:51:30.667 回答
2

"\**?ouser\**?":\s*"(\d\w+)

第 1 组与该817文档中的 匹配。在这里玩正则表达式

虽然如果您对任意标签进行大量 HTML 解析,那么使用SAXDOM解析器会做得更好。Andrew Finnell也提到了使用JSONWebKit

正如 merlin2011 提到的,Regex.Replace它将取代你试图拉出的东西,而不是为你抓住它。

于 2012-06-07T23:42:31.387 回答