簡體   English   中英

C#正則表達式刪除href

[英]C# Regex remove href

所以基本上我想刪除href即:

<td class="name"><a href="/leagues/euw/633">Apdo Dog2</a></td>

因此,我只想要文本中的Apdo Dog2部分。 任何想法?

這是我的代碼:

private void button1_Click(object sender, EventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("SITE");
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    StreamReader stream = new StreamReader(response.GetResponseStream());

    string final_response = stream.ReadToEnd();

    Regex r = new Regex(@"\<[^\>]+\>(.[^\<]+)</[^\>]+\>", RegexOptions.Singleline);
    Match m = r.Match(final_response);

    richTextBox1.Text = m.Value;

您可以使用此正則表達式:

<a.*?>(.*?)<\/a>

工作演示

在此處輸入圖片說明

有任何想法嗎? 是的,您應該使用HtmlAgilityPack之類的解析器來提取這些值。

您無需轉義括號字符,這些字符沒有特殊含義。 但是,主要問題是點. 刪除它。 然后使用“ 匹配”引用該組 組屬性以訪問您的比賽結果。

Regex r = new Regex(@"<[^>]+>([^<]+)</[^>]+>");
Match m = r.Match(final_response);
richTextBox1.Text = m.Groups[1].Value;

注意 :點. 已刪除,並且您使用的是否定類,因此可以刪除dotall修飾符。

工作演示

您可以在這里查看我的答案,並做類似的事情。

唯一的區別是,您將刪除/刪除所有內容,包括括號。

除此之外,請記住,一般共識是不要將RexEx與HTML混合使用:)

這應該工作:

void Main()
{
    // your input
    String input = @@"<td class=""name""><a href=""/leagues/euw/633"">Apdo Dog2</a></td>";
    // temp variables
    StringBuilder sb = new StringBuilder();
    bool inside = false;
    bool delete = false;
    // analyze string
    for (int i = 0; i < input.Length; i++)
    {
        // Special case, start bracket
        if (input[i].Equals('<')) { 
            inside = true;

        }
        // special case, close bracket
        else if (input[i].Equals('>')) {
            inside = false;
            continue;
        }

        // add if needed
        if (!inside)
                sb.Append(input[i]);
    }
    var result = sb.ToString(); // -> holds: "Apdo Dog2"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM