所以基本上我想删除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;
答案 0 :(得分:2)
答案 1 :(得分:2)
任何想法?是的,您应该使用HtmlAgilityPack之类的解析器来提取这些值。
您不需要转义括号字符,这些字符没有特殊含义。但是,主要问题是点.
删除它。然后使用匹配。 Groups Property查看论坛以访问您的匹配结果。
Regex r = new Regex(@"<[^>]+>([^<]+)</[^>]+>");
Match m = r.Match(final_response);
richTextBox1.Text = m.Groups[1].Value;
注意:点.
已删除,您正在使用否定类,因此您可以删除dotall修饰符。
答案 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"
}