C#正则表达式删除href

时间:2014-08-15 00:37:00

标签: c# regex

所以基本上我想删除href ie。:

<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;

3 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

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

<强> Working demo

enter image description here

答案 1 :(得分:2)

任何想法?是的,您应该使用HtmlAgilityPack之类的解析器来提取这些值。

您不需要转义括号字符,这些字符没有特殊含义。但是,主要问题是点. 删除它。然后使用匹配。 Groups Property查看论坛以访问您的匹配结果。

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

注意:点.已删除,您正在使用否定类,因此您可以删除dotall修饰符。

Working Demo

答案 2 :(得分:0)

你可以查看my answer here并做一些类似的事情。

唯一的区别是你将删除/删除包括括号在内的所有内容。

除此之外,请记住,普遍的共识是不要将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"
}