0

ページからソースをダウンロードするために webrequest を使用しています。次に、Regex を使用して文字列を取得し、文字列に保存する必要があります。

U_nQgAjU_tdUnfcA7lT5opoTLyLdslWDTpiNzcdkLoHlobS_HbujMw..

も必要:

bpvsid=nvnN2JFJqJc.&dcz=1

両方のうち:

<td style="cursor:pointer;" class="" onclick="NewWindow('U_nQgAjU_tdUnfcA7lT5opoTLyLdslWDTpiNzcdkLoHlobS_HbujMw..', 'bpvsid=nvnN2JFJqJc.&dcz=1', 'bpvstage_edit', '1200', '800')" onmouseout="HideHover();"><img src="gfx/info.gif" alt="" tipwidth="450" ajaxtip="openajax.php?target=modules/bpv/bpvstage_hover_info.php&rid=&oid=&bpvsid=&bpvname=" /></td>

十分ではないなどのエラーが発生し続けますか?

前もって感謝します。

現在のコードは、おそらくあらゆる点で間違っています。これには本当に新しい:

 Regex rx = new Regex("(?<=class=\"\" onclick=\"NewWindow(').*(?=')");
            longId = (rx.Match(textBox2.Text).Value);
            textBox1.Text = longId;
4

4 に答える 4

0

HTML の解析に使用HtmlAgilityPackすると、この非正規表現のアプローチが機能します。

string html = // get your html ...
var doc = new HtmlAgilityPack.HtmlDocument();  
doc.LoadHtml(html);  // doc.Load can also consume a response-stream directly
var result = Enumerable.Empty<string>();
var firstTD = doc.DocumentNode.SelectNodes("//td").FirstOrDefault();
if (firstTD != null)
{
    if (firstTD.Attributes.Contains("onclick"))
    {
        string onclick = firstTD.Attributes["onclick"].Value;
        int newWindowIndex = onclick.IndexOf("newWindow(", StringComparison.OrdinalIgnoreCase);
        if (newWindowIndex >= 0)
        {
            string functionBody = onclick.Substring(newWindowIndex + "newWindow(".Length);
            string[] tokens = functionBody.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            result = tokens.Take(2).Select(s => s.Trim(' ', '\''));
        }
    }
}
于 2013-11-05T11:02:54.343 に答える
0

正規表現の代わりに単純な文字列関数を使用することもできることに注意してください。

var s = "<td style=\"cursor:pointer;\" class=\"\" onclick=\"NewWindow('U_nQgAjU_tdUnfcA7lT5opoTLyLdslWDTpiNzcdkLoHlobS_HbujMw..', 'bpvsid=nvnN2JFJqJc.&dcz=1', 'bpvstage_edit', '1200', '800')\" onmouseout=\"HideHover();\"><img src=\"gfx/info.gif\" alt=\"\" tipwidth=\"450\" ajaxtip=\"openajax.php?target=modules/bpv/bpvstage_hover_info.php&rid=&oid=&bpvsid=&bpvname=\" /></td>";
var tmp = s.Substring(s.IndexOf("NewWindow('")).Split('\'');
var value1 = tmp[1]; // U_nQgAjU_tdUnfcA7lT5opoTLyLdslWDTpiNzcdkLoHlobS_HbujMw..
var value2 = tmp[3]; // bpvsid=nvnN2JFJqJc.&dcz=1
于 2013-11-05T11:00:11.757 に答える
0

正規表現NewWindow\('([^']*)', '([^']*)は、必要なものと一致します。必要な 2 つの文字列は、Groups[1] と Groups[2] にあります。

var match = Regex.Match(textBox2.Text, "NewWindow\('([^']*)', '([^']*)");
var id1 = match.Groups[1].Value;
var id2 = match.Groups[2].Value;
于 2013-11-05T10:56:06.117 に答える
0
var match = Regex.Match(s, @"onclick=""NewWindow\('([^']*)',\s*'([^']*)',.*");
if (match.Success)
{
    string longId = match.Groups[1].Value;
    string other = match.Groups[2].Value;
}

これにより、値を持つ 2 つのグループが得られます。

U_nQgAjU_tdUnfcA7lT5opoTLyLdslWDTpiNzcdkLoHlobS_HbujMw..
bpvsid=nvnN2JFJqJc.&dcz=1
于 2013-11-05T10:57:56.407 に答える