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() 
{
.....
}

このページから「ouser」フィールドを抽出する必要があります。私は試してみました:

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

しかし、出力にはページ全体があります...

4

2 に答える 2

3

常に数字であるとは限らない場合に備えて、2番目の引用符のペアの間のすべてに一致するように正規表現を更新しました。

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解析を行う場合は、 SAXまたはDOMパーサーを使用した方がよいでしょう。Andrew Finnellは、 JSONまたはWebKitの使用についても言及しています。

merlin2011が述べたように、あなたが引き出そうとしているものを置き換えるのであって、あなたのためにそれをつかむのではありませRegex.Replace

于 2012-06-07T23:42:31.387 に答える